2012-08-09 101 views
2

我想提醒用户他/她拖动标记时地图上的新位置。显然,当我拖动我的标记时,听众甚至不会触发。我希望我的用户能够选择在地图上放置标记,并且能够拖动它。点击并拖动地图的另一侧可以更改标记的位置,但是当我尝试添加用于拖动地图的侦听器时,弹出菜单警报,它不起作用。由于谷歌地图拖动标记问题

var LatLng = new google.maps.LatLng(lat,lng); 
     var marker; 
     var mapOptions = { 
      center: LatLng, 
      zoom: 16, 
      minZoom:12, 
      maxZoom:18, 
      panControl:false, 
      scrollwheel: false, 
      rotateControl:false, 
      streetViewControl:false, 
      keyboardShortcuts:false, 
      mapTypeControl: false, 
      scaleControl: false, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 


     var Gmap = new google.maps.Map($('#map_canvas').get(0),mapOptions); 


     // adding pointer by clicking on mac 
     google.maps.event.addListener(Gmap, 'click', function(e) { 
      if (marker) { 
       marker.setPosition(e.latLng); 
      }else{ 
       marker = new google.maps.Marker({ 
        position: e.latLng, 
        map: Gmap, 
        draggable:true 
       }); 
      } 

       Gmap.panTo(marker.getPosition()); 


     }); 

     google.maps.event.addListener(marker, 'dragend', function() { 
      alert('Show something here'); 
     }); 

回答

2

监听器不工作,因为当您定义侦听器时,标记是未定义的。你需要将其放置在功能块定义您的标记:

google.maps.event.addListener(Gmap, 'click', function(e) { 
    if (marker) { 
     marker.setPosition(e.latLng); 
    } else { 
     marker = new google.maps.Marker({ 
      position: e.latLng, 
      map: Gmap, 
      draggable:true 
     }); 

     google.maps.event.addListener(marker, 'dragend', function() { 
      alert('Show something here'); 
     }); 
    } 

    Gmap.panTo(marker.getPosition()); 
}); 

看到,在行动right here

0

我可以让你试试这个

google.maps.event.addListener(marker, 'dragend', function() { 
    updateMarkerStatus('Drag ended'); 
    geocodePosition(marker.getPosition()); 
    alert('Show something here'); 
}); 

您也可以使用Firefox来把你的JavaScript中的“破发”,这样你可以看到,如果JavaScript函数被触发。可以找到的信息here

+0

同样的结果,它不触发dragend – 2012-08-09 20:06:08