【问题标题】:google maps - javascript problem谷歌地图 - javascript问题
【发布时间】:2010-11-15 17:40:16
【问题描述】:

我在使用谷歌地图 V3 时遇到问题 代码是谷歌示例的一部分。我想将侦听器添加到每个标记,所以我将标记设置为数组。但它不起作用:( 谁能帮我?

    function initialize() {
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(37.4419, -122.1419), 13);

    // Add 10 markers to the map at random locations
    var bounds = map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    var lngSpan = northEast.lng() - southWest.lng();
    var latSpan = northEast.lat() - southWest.lat();
    var marker = new Array(10); 
    for (var i = 0; i < 10; i++) {
      var latlng = new GLatLng(southWest.lat() + latSpan * Math.random(),
                              southWest.lng() + lngSpan * Math.random());

      marker[i] = new GMarker(latlng,{ draggable: true });

      GEvent.addListener(marker[i] , "dragstart", function() {
        map.closeInfoWindow();
      });

      GEvent.addListener(marker[i]  , "dragend", function() {
        marker[i].openInfoWindowHtml("text" + i);
      });

       map.addOverlay(marker[i] );  
    }
  }
}

【问题讨论】:

  • 当我想拖动标记时,我可以移动它。但完成移动后,我想显示文字。但什么也没发生。如果可以正常工作,标记的底部有一个小十字,移动后消失。现在,十字架还在地图上。
  • 这里是一个例子 - 请只看地图,它只是页面的一部分。praha-cyklistika.cz/map2.html
  • 看看闭包并尝试了解它们的用法。我认为它可能会有所帮助
  • 非常感谢,这就是我要找的...

标签: google-maps google-maps-api-2


【解决方案1】:

Google Maps v2 API 已弃用,您应该使用 v3。查看使用新 API 的工作示例:Google Maps JS API v3 - Simple Multiple Marker Example

【讨论】:

    【解决方案2】:

    这看起来像 Google maps api V2 代码。

    • GLatLng替换为google.maps.LatLng
    • GEvent 替换为google.maps.event
    • 在 V3 中使用 marker[i].setMap(map); 代替 map.addOverlay(marker[i]);

    对于其余部分,请务必阅读API documentation。那里有很多例子可以帮助你开始。

    【讨论】: