2016-03-04 103 views
4

我做了一個拖放功能,以便用戶可以從側邊欄拖動圖標,當他們下降圖標,標記放置。拖放谷歌地圖標記

下面的實現看起來像是實現它的最好方法,但是當網絡速度很慢時會出現問題,大概是因爲mouseover事件中的lat/lng(非常)不準確。

任何人都可以提供另一種方法,我可以做到這一點?也許立即放置標記,然後使用內置的地圖拖放?

function placeMarker(lat, lng) { 
    var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(lat, lng), 
    draggable: true, 
    map: map 
    }); 
    return marker; 
} 

$(".icon").draggable({helper: 'clone', 

    start: function(e, ui) { 
    map.setOptions({draggable: false}); 
    $("#map").css('cursor', 'crosshair'); 
    }, 

    stop: function(e,ui) { 
    map.setOptions({draggable: true}); 
    $("#map").css('cursor', 'default'); 

    google.maps.event.addListenerOnce(map, "mouseover", function(event) { 
     var lat = event.latLng.lat(), 
      lng = event.latLng.lng(), 
      id = ui.helper.context.id; 

     pointA = id === "pointA" && pointA === true 
         ? pointA.setMap(null) : placeMarker(lat, lng); 

     pointB = id === "pointB" && pointB === true 
         ? pointB.setMap(null) : placeMarker(lat, lng); 
    }); 
    } 
}); 
+1

發生了什麼*問題* – 2016-03-04 10:54:34

+1

標記需要很長時間才能放置,當它放置在地圖上的錯誤位置時。 – seanbrodie

+0

也許嘗試使用'google.maps.Geocoder()'服務https://developers.google.com/maps/documentation/javascript/geocoding – 2016-03-04 11:14:57

回答

1

的問題是使用mousemove事件,而不是mouseover時解決。

我認爲這是我應該一直使用的事件。低延遲顯然會干擾最初的mouseover事件,因爲該引腳被丟棄而不會觸發。

希望這可以幫助他人。