【问题标题】:Getting coordinates of marker in Google Maps API在 Google Maps API 中获取标记的坐标
【发布时间】:2012-06-14 09:33:39
【问题描述】:

我正在使用 Google 地图 API。我正在使用下面的代码来获取标记的坐标。

var lat = homeMarker.getPosition().$a;
var lng = homeMarker.getPosition().ab;

我使用 Google 地图构建的应用程序一切正常。 但是我今天对其进行了测试,但在获取正确坐标时遇到了问题。只是发现上面的代码变得未定义。在我使用 console.log(homeMarker.getPosition()) 之后,我发现这现在是他们用于坐标的变量。

var lat = homeMarker.getPosition().ab;
var lng = homeMarker.getPosition().cb;

我不会问为什么 Google 地图会这样做,但您也可以将其包含在您的答案中。我的问题是,每次谷歌地图更改他们使用的变量时,如何在不更改代码的情况下正确获取坐标。

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:
    var lat = homeMarker.getPosition().lat();
    var lng = homeMarker.getPosition().lng();
    

    请参阅 google.maps.LatLng 文档和 google.maps.Marker getPosition()

    【讨论】:

      【解决方案2】:

      另一种选择

      var map = new google.maps.Map(document.getElementById('map_canvas'), {
          zoom: 1,
          center: new google.maps.LatLng(35.137879, -82.836914),
          mapTypeId: google.maps.MapTypeId.ROADMAP
      });
      
      var myMarker = new google.maps.Marker({
          position: new google.maps.LatLng(47.651968, 9.478485),
          draggable: true
      });
      
      google.maps.event.addListener(myMarker, 'dragend', function (evt) {
          document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>';
      });
      
      google.maps.event.addListener(myMarker, 'dragstart', function (evt) {
          document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>';
      });
      
      map.setCenter(myMarker.position);
      myMarker.setMap(map);
      

      和html文件

      <body>
          <section>
              <div id='map_canvas'></div>
              <div id="current">Nothing yet...</div>
          </section>
      </body>
      

      【讨论】:

      • google.maps.event.addListener(myMarker, 'dragend', function (evt) { .. });这会引发异常
      【解决方案3】:

      此外,您可以通过“拖动”侦听器显示当前位置并将其写入可见或隐藏字段。您可能还需要存储缩放。这是工作工具的复制和粘贴:

                  function map_init() {
                  var lt=48.451778;
                  var lg=31.646305;
      
                  var myLatlng = new google.maps.LatLng(lt,lg);
                  var mapOptions = {
                      center: new google.maps.LatLng(lt,lg),
                      zoom: 6,
                      mapTypeId: google.maps.MapTypeId.ROADMAP
                  };
      
                  var map = new google.maps.Map(document.getElementById('map'),mapOptions);   
                  var marker = new google.maps.Marker({
                      position:myLatlng,
                      map:map,
                      draggable:true
                  });
      
                  google.maps.event.addListener(
                      marker,
                      'drag',
                      function() {
                          document.getElementById('lat1').innerHTML = marker.position.lat().toFixed(6);
                          document.getElementById('lng1').innerHTML = marker.position.lng().toFixed(6);
                          document.getElementById('zoom').innerHTML = mapObject.getZoom();
      
                          // Dynamically show it somewhere if needed
                          $(".x").text(marker.position.lat().toFixed(6));
                          $(".y").text(marker.position.lng().toFixed(6));
                          $(".z").text(map.getZoom());
      
                      }
                  );                  
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-04
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        相关资源
        最近更新 更多