在Google Maps V3中,如何获取可拖动标记来平移地图?

Mar*_*hio 15 google-maps google-maps-api-3 google-maps-markers

我找到了几个V2示例,说明在拖动标记时如何平移地图.例如:http: //www.putyourlightson.net/projects/coordinates

    // create map and add controls
var map = new GMap2(document.getElementById("map"));
map.addControl(new GLargeMapControl());        
map.addControl(new GMapTypeControl());

// set centre point of map
var centrePoint = new GLatLng('53.34870686020199', '-6.267356872558594');
map.setCenter(centrePoint, 14); 

// add a draggable marker
var marker = new GMarker(centrePoint, {draggable: true});
map.addOverlay(marker);

// add a drag listener to the map
GEvent.addListener(marker, "dragend", function() {
    var point = marker.getPoint();
    map.panTo(point);
    document.getElementById("latitude").value = point.lat();
    document.getElementById("longitude").value = point.lng();
});
Run Code Online (Sandbox Code Playgroud)

在拖动标记时,此页面似乎"自动平移"; 请注意,它唯一的事件监听器是"dragend".但是我向你保证,当拖动标记时,该地图会平移.

我试图用V3 API实现同样的目的,但没有任何成功.我甚至尝试在拖动图标时调用map.panTo(),结果令人不满意:http://www.publicgloucester.com/test.html

function initialize ()
   {
   Gloucester = new google.maps.LatLng (42.6159285, -70.6619888);

   myOptions = 
      {
      zoom: 14,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: Gloucester,
      streetViewControl: false
      }

   map = new google.maps.Map (document.getElementById ("map_canvas"), myOptions);

   marker = new google.maps.Marker ({position: Gloucester, title: "Gloucester, MA"});
   marker.setMap (map);
   marker.setDraggable (true);

   google.maps.event.addListener (marker, 'drag', function (event) 
      {
      // Pan to this position (doesn't work!)
      map.panTo (marker.getPosition());
      });

   }
Run Code Online (Sandbox Code Playgroud)

对我来说这是行不通的,因为在地图移动时平移将标记放在地图的中心是虚假的.

是V2 API自动执行此操作,而V3 API不是这样吗?如何使用V3 API实现此效果?

谢谢.

小智 19

使用dragend而不是拖动.代码将是,

  google.maps.event.addListener(marker, "dragend", function(event) {

       var point = marker.getPosition();
       map.panTo(point);

        });
Run Code Online (Sandbox Code Playgroud)


Mar*_*hio 12

谷歌已修复此问题:http: //code.google.com/p/gmaps-api-issues/issues/detail?id = 2404

您可以在http://www.publicgloucester.com/test2.html上看到该修复程序.忽略评论"它不能做我想要的"; 该评论已过时.