我正在使用Google Maps JS API。我正在尝试在地图的中心设置一个标记。我正在使用currLocation
变量来保存当前位置。 currLocation
变量在内联私有方法(第1节)中具有值,但是当我想设置标记时(第2节)它是null。
Stackoverflow有很多“无法将值设置为全局变量”的解决方案,但我无法用他们的参考解决我的问题。
任何帮助都将不胜感激。
function initMap() {
var currLocation = null;
var defaultCenter = { lat: 34.397, lng: 150.644 };
//Set Map properties
var map = new google.maps.Map(document.getElementById('gmap'), {
scrollwheel: true,
zoom: 10
});
//Get Current Location - Section 1
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
currLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
map.setCenter(currLocation);
});
}
else {
map.setCenter(defaultCenter);
}
//Put marker on the current location - Section 2
var marker = new google.maps.Marker({
position: currLocation,
map: map
});
}
答案 0 :(得分:0)
问题在于你的控制流逻辑。如果第一个特征检测失败(即,if(navigator.geolocation)
)(根据您的描述,它听起来就像那样),那么currLocation
的值将保持为空。如果,不希望在没有currLocation
的情况下继续:
else
块中抛出异常,因为导航器没有地理定位。null
以外的可接受默认值。答案 1 :(得分:0)
你应该把标记函数放在getCurrentPosition的成功回调中。因为它是一个异步函数。在调用成功回调函数之前,currLocation将为null。