Javascript+;谷歌地图:如何获得地理位置,然后分配地图的中心?
这可能是一个非常基本的问题。我有代码工作,但它在逻辑上是错误的 我需要找到地理位置,把地图的中心放在那里。如果我无法访问地理位置,那么我想将中心设置在新天堂。我知道我应该使用回调,但我不知道如何使用 现在代码可以工作,但速度很慢。它首先将中心设置为新天堂,然后跳到真实的地理位置。我想马上把它送到真正的那个。我应该如何做到这一点 多谢各位Javascript+;谷歌地图:如何获得地理位置,然后分配地图的中心?,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,这可能是一个非常基本的问题。我有代码工作,但它在逻辑上是错误的 我需要找到地理位置,把地图的中心放在那里。如果我无法访问地理位置,那么我想将中心设置在新天堂。我知道我应该使用回调,但我不知道如何使用 现在代码可以工作,但速度很慢。它首先将中心设置为新天堂,然后跳到真实的地理位置。我想马上把它送到真正的那个。我应该如何做到这一点 多谢各位 $(document).ready(function() { let canvas = $("#map-canvas").get(0); // Styles
$(document).ready(function() {
let canvas = $("#map-canvas").get(0);
// Styles for map
// https://developers.google.com/maps/documentation/javascript/styling
let styles = [
// Hide Google's labels
{
featureType: "all",
elementType: "labels",
stylers: [
{visibility: "off"}
]
},
// Hide roads
{
featureType: "road",
elementType: "geometry",
stylers: [
{visibility: "off"}
]
}
];
// Options for map
// https://developers.google.com/maps/documentation/javascript/reference#MapOptions
let options = {
center: {lat: 41.3184, lng: -72.9318},//new heaven
disableDefaultUI: true,
mapTypeId: google.maps.MapTypeId.ROADMAP,
maxZoom: 14,
panControl: true,
styles: styles,
zoom: 13,
zoomControl: true
};
// Instantiate map
map = new google.maps.Map(canvas, options);
//reset center if geolocation is accessible (HERE IS THE PROBLEM)
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
map.setCenter(pos);
var marker = new google.maps.Marker({
position: map.getCenter(),
map:map,
label:"Around Me"
});
});
}
});
如果不希望它以“新天堂”为中心,则在地理位置回调返回值之前不要设置中心。这样做的缺点是,如果地理定位失败(用户拒绝或浏览器不支持),地图将根本无法显示
$(文档).ready(函数(){
让画布=$(“#映射画布”).get(0);
//地图样式
// https://developers.google.com/maps/documentation/javascript/styling
让样式=[
//隐藏谷歌的标签
{
featureType:“全部”,
elementType:“标签”,
样式:[{
能见度:“关闭”
}]
},
//隐藏道路
{
特色类型:“道路”,
elementType:“几何体”,
样式:[{
能见度:“关闭”
}]
}
];
//地图选项
// https://developers.google.com/maps/documentation/javascript/reference#MapOptions
让选项={
disableDefaultUI:true,
mapTypeId:google.maps.mapTypeId.ROADMAP,
maxZoom:14,
泛控制:对,
风格:风格,
缩放:13,
动物控制:正确
};
//实例化映射
map=新的google.maps.map(画布,选项);
//如果可以访问地理位置,则重置中心(问题出在这里)
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
pos={
纬度:位置坐标纬度,
lng:position.coords.longitude
};
地图设置中心(pos);
var marker=new google.maps.marker({
位置:map.getCenter(),
地图:地图,
标签:“围绕着我”
});
});
}
});代码>
html,
身体,
#地图画布{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}