我尝试{{1>}(标记,圈子和弹出)到地图。
我能够成功添加标记和圆圈,但我无法添加弹出窗口,也无法删除导致标记和圆圈相乘的层...
在添加新标记和循环之前,它基本上不会删除前一个标记和圆圈。
这是一个有效的FIDDLE:
https://jsfiddle.net/31ws6z37/3/
这是我的全部代码:
addLayer
有人可以让我知道如何删除Layer以及如何将弹出窗口添加到我的地图中吗?
任何帮助都将不胜感激。
修改
似乎什么都没有用,我把头发拉了出来。我转过来的每一个角落,每次搜索都表明我需要使用removeLayer删除标记,但对我来说情况并非如此,我不理解!!
这是我的代码的另一个版本,在删除旧代码之前仍会添加标记....
function initializeMapAndLocator(){
var map = L.map('map_2385853');
googleStreets = L.tileLayer('http://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}',{
maxZoom: 20,
subdomains:['mt0','mt1','mt2','mt3']
}).addTo(map);
map.locate({setView: true,
maxZoom: 16,
watch:true,
timeout: 60000
});
function onLocationFound(e) {
var radius = e.accuracy / 2;
var marker = new L.Marker(e.latlng, {draggable:true});
var circles = new L.circle(e.latlng, radius).bindPopup("You are within " + radius + " meters from this point").openPopup();;
map.removeLayer(marker);
map.removeLayer(circles);
map.addLayer(marker);
map.addLayer(circles);
}
map.on('locationfound', onLocationFound);
}
initializeMapAndLocator();
我确定我做错了什么,但我不知道在哪里以及怎么做!
任何帮助都会很棒。
答案 0 :(得分:1)
问题在于你把错误的东西混合在一起。您可以更轻松地学习创建传单地图的basics。在您的第一个代码段中,首先初始化标记,然后将其删除,然后将其添加到地图中。这没有任何意义,也不符合逻辑。如果标记和圆圈图层位于地图上,请在onLocationFound()
函数中询问。如果为true则删除它:
var marker;
var circles;
function onLocationFound(e) {
var radius = e.accuracy / 2;
if(map.hasLayer(circles) && map.hasLayer(marker)) {
map.removeLayer(circles);
map.removeLayer(marker);
}
marker = new L.Marker(e.latlng, {draggable:true});
circles = new L.circle(e.latlng, radius);
circles.bindPopup("You are within " + radius + " meters from this point").openPopup();
map.addLayer(marker);
map.addLayer(circles);
}
以下是修改后的 FIDDLE 。希望它有所帮助
greez Manuel