2012-08-09 102 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