使用leaflet.js隐藏地图周围的其余部分

8

在标准的leaflet.js地图上,是否可能将“世界其他地方”变暗或隐藏,只显示一个国家?也许可以用某种“反转多边形”叠加该国家的轮廓线来实现?如果有代码示例或链接,将不胜感激。

2个回答

8
扩展@tmcw的答案...
秘诀是使用在http://leafletjs.com/reference.html#polygon中描述的属性绘制多边形。
你可以通过传递一个由经纬度数组组成的数组来创建带洞的多边形,第一个经纬度数组代表外环,其余的代表内部的洞。
第一个多边形将是一个与地图本身一样大的矩形,而洞将是您想要突出显示的国家。
L.polygon( [outerBoundsLatLngs, latLngs] ); 

这是一个可用的示例: http://jsfiddle.net/FranceImage/1yaqtx9u/

当平移视图时,遮罩效果会消失,因为它似乎在等待瓦片加载后再进行遮罩处理。这种情况有什么解决办法吗? - Titan
我刚刚注意到使用L.Mask技术(我上面提到的那个)会出现剪裁问题,但是使用leaflet-maskcanvas却不会(请查看演示http://domoritz.de/vbb-coverage/)。我将尝试理解他们是如何做到这一点的。 - YaFred
http://geojson.io(工具:绘制多边形)。当您关闭形状时,您将能够复制/粘贴该值(在右侧视图中)。 - YaFred

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接