使用Leaflet,我创建了一个包含多个切换图层的地图。每个层都是GeoJSON线串和多个点的组合,其中每个点用于多个层(总线路径和路径上的所有停靠点)。这就是我到目前为止(遗漏了所有混乱的GeoJSON数据):
var busStops = L.geoJson([busStop1, busStop2, busStop3, busStop4]);
var busRoute10 = L.geoJson([route10, busStop1, busStop3]);
var busRoute12 = L.geoJson([route12, busStop2, busStop4]);
var baseLayers = {
"Route 12": busRoute10,
"Route 12": busRoute12,
"All Bus Stops": busStops,
};
L.control.layers(null, baseLayers, {collapsed: false}).setPosition ('topright').addTo(map);
效果很好。我的问题是将弹出窗口绑定到每个点,因此当您单击公共汽车站时,名称会弹出。我正在使用:
function onEachFeature(feature, layer) {
// does this feature have a property named popupContent?
if (feature.properties && feature.properties.popupContent) {
layer.bindPopup(feature.properties.popupContent);
}}
但我正在努力弄清楚在哪里调用它。唯一有效的是:
var busStops = L.geoJson([busStop1, busStop2, busStop3, busStop4],{
onEachFeature: onEachFeature});
var busRoute10 = L.geoJson([route10, busStop1, busStop3],{
onEachFeature: onEachFeature});
var busRoute12 = L.geoJson([route12, busStop2, busStop4],{
onEachFeature: onEachFeature});
这看起来真的非常多余。有更好的方法吗?
答案 0 :(得分:1)
实际上,您可以将相同弹出内容的多次绑定到多个GeoJSON组中出现的公交车站...但实际上您多次构建您的公交车站。
如果这些是带阴影的默认标记,当您显示共享相同停靠点的线路时,您应该看到阴影堆叠起来(即背景应该变暗)。
现在,如果你想避免这些多个公共汽车站的副本,那就需要更复杂的方法,因为删除busLine1
busStop1
会将busLine2
从地图中删除,即使它也是data-ft:{
"src":10, "sty":46, "actrs":"14385334364",
"pub_time":1289830690, "fbid":"1485431831867", "s_obj":11, "s_edge":1,
"s_prnt":11, "pos":1, "sec":"new", "filter":"lf",
"app_id":"201278444497"
}
的一部分仍然在地图上......