【发布时间】:2016-02-22 01:57:25
【问题描述】:
我有想要在地图中渲染的标记列表,但我想要一个一个。在第一次单击时,我想制作新的标记。然后,当我单击另一个位置时,我希望我的标记只是移动到新的 latLng 而不是创建另一个标记。这是我的代码:
function (licon, coord, data) {
var self = jQuery(this);
var map = self.data("map");
var latlng = new L.LatLng(coord[0], coord[1]);
//Create Marker
if (licon) {
var leafIcon = L.icon(licon);
console.log(typeof (marker));
if (typeof (marker) === 'undefined') {
var marker = L.marker(latlng, {
icon: leafIcon,
"markerData": data,
draggable: true
});
} else {
console.log('not undefined');
map.removeLayer(marker);
marker = L.marker(latlng, {
icon: leafIcon,
"markerData": data,
draggable: true
});
}
} else {
var marker = L.marker(latlng, {
"markerData": data,
draggable: true
});
}
marker.addTo(map);
return marker;
}
【问题讨论】:
-
应该
typeof (marker === 'undefined')而不是typeof marker === 'undefined'? -
已经编辑了代码
-
我猜你在每个用户点击地图时调用你的函数?在这种情况下,您的
var marker可能应该在该函数的范围之外,以便您可以在下次调用时检索它并检查是否是undefined。您可能还对marker.setLatLng()感兴趣,而不是删除标记并添加一个新标记。
标签: leaflet marker angular-leaflet-directive