首页 > 解决方案 > 如何更新谷歌地图标记位置?

问题描述

所以我正在尝试为一个学校项目建立一个网站,其中一部分需要获取用户位置并将其显示在地图上。我已经设法使用 geolocator api 获取用户位置,但似乎无法更新标记,因为即使在获得新的 lat long 后它仍保留在默认位置。任何帮助将不胜感激 :)

我在加载网站时采用了默认位置(加利福尼亚州)(它成功)并设法获取用户位置(使用控制台验证以显示结果),但代码仍显示加利福尼亚标记。

<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 值的变化而变化,但是在地图上它不会显示新位置。

标签: javascripthtmlapi

解决方案


getLoc() 是异步的。调用回调后 Currloc 发生变化。我假设您同步调用了 mapInit。在回调中调用标记


推荐阅读