传单,着色矢量,同时仅在特定缩放级别显示它们
Leaflet, coloring vectors while only displaying them at certain zoom levels
再说另一个基本问题。不过,这让我感到困惑。
我有一张山地自行车道地图,显示所有缩放级别的小径起点/停车场的图标。但是,当用户放大(缩放级别>=12)时,我希望显示 GPS 轨迹。我对缩放控件/图层显示进行了排序,但符号化轨迹(矢量)是我卡住的地方。我已经尝试了无数次迭代,但没有解决我的问题。
根据我编写代码的方式,我无法在我的生命中找出应用样式的正确方法(颜色,不透明度,粗细)。
我的地图,就像现在一样。我(暂时)将地图集中在这条特定的小径上。
陷入困境的代码:
//Load Montgomery Bell (Green)
var mbGreenMarker = L.geoJson();
$.getJSON("trails/MBgreenTrail.geojson", function(json) {
L.geoJson(json ,{
style: function (feature)
{
return {"color": "#00ff00","weight": 5,"opacity": 1}
}
},
{
onEachFeature: function( feature, layer ){
layer.bindPopup(feature.properties.type);
}
}
).addTo(map);
mbGreenMarker.addData(json);
});
map.on('zoomend ', function(e) {
if ( map.getZoom() < 12 ){ map.removeLayer(mbGreenMarker)}
else if ( map.getZoom() >= 12 ){ map.addLayer(mbGreenMarker)}
});
我觉得有一种更有效的方法来加载GeoJSON,对其进行符号化,然后通过map.getZoom函数传递它。
如果要简化向mbGreenMarker
图层组添加新 GeoJSON 数据的方式,但仍根据需要设置样式,则只需在设置图层组时添加样式定义mbGreenMarker
即可。它也应该自动应用于以后添加的数据(与onEachFeature
相同)。
请注意,使用问题中发布的代码,您实际上从相同的json
数据构建了两次传单矢量图层:
- 一旦进入中间
L.geoJson
组,它总是在地图上,与你的指定的样式。 - 第二次将数据添加到
mbGreenMarker
,没有任何自定义样式。只有这第二层将由事件侦听器打开/关闭。
您可以摆脱中间L.geoJson
组并在 mbGreenMarker
中正确设置其样式。结果将是与当前代码不同的行为。希望它更接近您尝试实现的目标。
var mbGreenMarker = L.geoJson(null, {
style: function(feature) {
return {
"color": "#00ff00",
"weight": 5,
"opacity": 1
}
}
}, {
onEachFeature: function(feature, layer) {
layer.bindPopup(feature.properties.type);
}
});
// Add mbGreenMarker to map if current zoom is >= 12.
showmbGreenMarker();
$.getJSON("trails/MBgreenTrail.geojson", function(json) {
mbGreenMarker.addData(json);
});
map.on('zoomend ', showmbGreenMarker);
function showmbGreenMarker() {
if (map.getZoom() < 12) {
map.removeLayer(mbGreenMarker)
} else if (map.getZoom() >= 12) {
map.addLayer(mbGreenMarker)
}
}
在添加/删除之前,您可能还需要检查 mbGreenMarker :
if (map.getZoom() >= 12 && map.hasLayer(mbGreenMarker)) {}
如果用户可以在图层控件中添加/删除层,这将非常有用。
最后,您可以添加缩放/视口信息,如下所示,以便该应用程序在手机上看起来不错。
例
相关文章:
- 为什么缩放按钮不会显示在照片擦除中
- 未注释img´除非调整浏览器大小、缩放或打开开发工具,否则不会显示
- ArcGIS Javascript-缩放以显示所有点
- 谷歌地图漏洞?显示的标记会根据缩放级别而更改
- 网页调整缩放显示
- Jquery:缩放后的图像未正确显示
- 传单,着色矢量,同时仅在特定缩放级别显示它们
- 在某些缩放级别不显示数据的图表
- 仅在缩放级别 15 谷歌地图 API v3 上显示标记
- 当缩放级别为 1 时,谷歌地图显示 kml(内部是图像 URL)不正确
- 显示图形点的平均值,随着用户缩放而动态修正
- 如何缩放 html5 画布以显示谷歌地图坐标
- 谷歌地图区域突出显示和适当的缩放“近似”区域
- 防止显示.js缩放
- 如何在传单中显示超出特定缩放级别的标签
- 突出显示如何在单击重置缩放按钮事件中捕获和插入逻辑
- 缩放 X 时突出显示为空
- jQuery 显示/隐藏缩放无法按预期工作
- 谷歌地图缩放控制隐藏和显示
- 如何使用灯箱显示图像的缩放尺寸