Я сделал функцию перетаскивания и падение, так что пользователи могут перетащить значок на боковой панели, и когда они падение значок, маркер помещается.Перетаскивание Карты Google Marker
Представленная ниже реализация показалась лучшим (только) способом ее достижения, но проблемы возникают, когда сеть работает медленно, предположительно потому, что lat/lng из события mouseover (очень) неточно.
Может ли кто-нибудь предложить альтернативный способ, я мог бы это сделать? Возможно, сразу поместив маркер, а затем используя встроенные карты drag-n-drop?
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);
});
}
});
Что такое * проблемы *, которые происходят? –
Маркер занимает много места, и когда он делает это, он помещается в неправильном месте на карте. – seanbrodie
Возможно, попробуйте использовать 'google.maps.Geocoder()' службу https://developers.google.com/maps/documentation/javascript/geocoding –