我创建了这个jsFiddle,它向您展示了如何做到这一点。
var markers = [];
function initialize() {
var myLatLng1 = new google.maps.LatLng(50.965049,5.484231);
var myLatLng2 = new google.maps.LatLng(50.97,5.474231);
var myOptions = {
zoom: 14,
center: myLatLng1,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
for (var i = 0; i < 2; i++) {
var marker = new google.maps.Marker({
position: i === 0 ? myLatLng1 : myLatLng2,
map: map,
title: 'Galaconcert ' + i,
id: i
});
markers[i] = marker;
manageBindings(marker);
}
function manageBindings(marker) {
var id = marker.id;
google.maps.event.addListener(marker, 'click', function(ev) {
var contentString =
'<div id="infowindow">' +
'Nice infowindow ' + id + '<br />' +
'<button class="move" data-id="' + id + '">move me</button> ' +
'<button class="close" data-id="' + id + '">close me</button><br />' +
'</div>'
;
marker.infowindow = new google.maps.InfoWindow();
marker.infowindow.setContent(contentString);
marker.infowindow.open(map, marker);
});
}
}
$(function(){
$('button.move').live('click', function(){
var id = $(this).data('id');
markers[id].setDraggable(true);
});
$('button.close').live('click', function(){
var id = $(this).data('id');
markers[id].infowindow.close();
});
initialize();
});
您应该将所有创建的标记保存在一个数组中,以便您可以访问它们。在信息窗口中,您存储对该数组的引用 - 在我的示例中,它位于按钮的数据属性中。然后,当 infowindow 中发生任何事情时,您可以访问特定标记并将其可拖动选项设置为 true。
代码应该重构,不应该使用live
,但你应该有这个想法。