Есть несколько вещей, которые нужно сделать, чтобы это заработало:
- Установите zIndex на перетаскиваемом элементе, чтобы он отображался над картой.
- Установите флаг возврата на свой элемент, чтобы он не упал под карту.
- Добавьте обработчик для события stop, чтобы вы могли выполнить некоторый код, когда пользователь удалит элемент на вашей карте.
- Карта от смещения внутри элемента карты до смещения долготы и широты от верхнего левого угла границ вашей карты.
Я реализовал пример на основе вашего кода , который выполняет первые три из этих пунктов. Чтобы выполнить последнее, вам нужно запросить объект GMap2 , чтобы определить текущее представление, а затем выполнить сопоставление. Если у вас есть проблемы с этой частью, пожалуйста, напишите здесь, и когда я получу время, я обновлю свой ответ с этой функциональностью.
$("#b").draggable({
zIndex: 2700,
revert: true,
revertDuration: 0,
stop: function(event, ui)
{
var dragOffset = ui.offset;
var mapOffset = $(".map").offset();
if (dragOffset.top > mapOffset.top &&
dragOffset.left > mapOffset.left &&
dragOffset.top < (mapOffset.top + $(".map").outerHeight()) &&
dragOffset.left < (mapOffset.left + $(".map").outerWidth ()))
{
// top left corner is inside the map div (you can finess this "inside map" check)
// add a marker at a random offset.
// you will need to do some additional work to map
// the page offset to lat/lng offset from the corner of the map
var point = new GLatLng(southWest.lat() + latSpan * Math.random(),
southWest.lng() + lngSpan * Math.random());
map.addOverlay(createMarker(point, i + 1));
}
}
});