因此,我正在尝试为学校项目建立网站,其中的一部分需要获取用户位置并将其显示在地图上。我设法使用geolocator api获取了用户位置,但似乎无法更新标记,因为即使获取了新的纬度,只要它仍保留在默认位置即可。任何帮助将不胜感激:)
我已将默认位置(加利福尼亚州)显示在加载网站上(成功完成),并设法获取用户位置(已使用控制台进行了验证以显示结果),但是代码仍显示加利福尼亚标记。
<script type="text/javascript">
var latitude = 36.8;
var longitude = -119.4;
var currloc;
function getLoc() {
if ("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(function(position) {
latitude = (Math.round(position.coords.latitude*100))/100;
longitude = (Math.round(position.coords.longitude*100))/100;
currloc = {lat: latitude, lng: longitude};
console.log("Geolocation supported");
console.log(latitude);
console.log(longitude);
});
}
else {
latitude = 0.0;
longitude = 0.0;
console.log("Geolocation not supported");
}
}
function mapInit() {
currloc = {lat: latitude, lng: longitude};
var map = new google.maps.Map(document.getElementById("map"), {zoom: 4, center: currloc, disableDoubleClickZoom: true,});
var mark = new google.maps.Marker({
position: currloc,
map: map,
title: latitude+', '+longitude
});
}
</script>
我希望标记会随着initMap函数的currloc值的更改而改变,但是在地图上不会显示新位置。
答案 0 :(得分:1)
getLoc()是异步的。调用回调后,Currloc发生更改。我假设您同步调用了mapInit。 在回调中调用标记