我有jquery移动网站,尝试使用动态标记添加gmap(v3):
bindMap: function () {
var markers = mapArray; //global var with coordinates
$('#mapContent').gmap({ 'callback': function () {
var self = this;
$.each(markers, function (i, m) {
if (markers[i][0] && markers[i][1]) {
self.addMarker({ 'position': new google.maps.LatLng(markers[i][0], markers[i][1]), 'bounds': true }).click(function () {
self.openInfoWindow({ 'content': markers[i][2] }, this);
});
}
});
}
});
}
它加载了一个带有标记的地图,但是一旦我更改了标记并返回相同的代码来显示此地图,它就会跳过回调函数并且不会使用新标记渲染新的地图。我之前或$('#mapContent').gmap('refresh')
尝试拨打$('#mapContent').gmap('clear', 'markers')
,但仍未显示新标记..
答案 0 :(得分:3)
我不太清楚你的意思'回到相同的代码',但你不能重用相同的地图对象。
我会有一个创建地图的方法和一个添加/刷新标记的方法
function addMarkers(markers, clearOld) {
if(clearOld) $('#mapContent').gmap('clear', 'markers');
$.each(markers, function(i, m) {
$('#mapContent').gmap('addMarker', {
'position': new google.maps.LatLng(m.lat, m.lng),
'bounds':true,
'id' : m.id,
'icon' : 'img/marker.png'
},function(map,marker) {
$(marker).click(function(){
//do something
});
});
});
}
因此,只需重新使用地图并在想要向地图添加新标记时调用addMarkers