Leafletjs - OpenstreetMap:在Overlay图层之上添加道路名称

时间:2013-12-18 16:41:53

标签: openstreetmap leaflet

我是OpenstreetMap和Leafletjs的新手。我正在尝试通过使用不同的颜色来显示道路拥堵以及我面临的问题,实现一个显示高速公路(也称为世界某些地区的高速公路)的行程时间信息的地图,一旦地图图块被渲染,它就会出现包含所有信息,例如城镇/城市名称,道路名称等。 根据我收到的道路信息,我在位于图块层顶部的叠加层中创建道路颜色。问题是,一旦发生这种情况,道路着色将覆盖出现在图块层上的道路名称。问题可以在下面显示的图像中看到。

problem http://i40.tinypic.com/i6ies2.png

有没有办法,我可以提取道路名称,以便我可以将它放在道路着色层上方的一层中,以便道路名称出现在道路着色的顶部。

感谢您提供任何帮助,期待一些回复。

由于

2 个答案:

答案 0 :(得分:1)

正如您所说,道路名称(此处为ref图标符号)是OSM栅格地图图块的一部分,无法轻易更改。
因此,最简单的解决方案是切换到没有标签的mapstyle 另一个想法是为你的cusom GPS轨道添加更多alpha,因此它更加“空洞”并且更适合mapstyle。但是默认的OSM样式不适合在顶部添加信息,因为这个底图已经很详细了。也许使用另一个是有意义的:
http://wiki.openstreetmap.org/wiki/Featured_tiles

答案 1 :(得分:1)

理论上,您可以创建两组瓷砖:一组带有道路线,另一组带有护罩(标签)。渲染具有透明背景的盾牌瓷砖。然后攻击Leaflet,在覆盖层上方有第二个图块层。

然而......对于一个相当简单的问题来说,这是一大堆麻烦。那么:为什么不在道路旁边渲染道路数字而不是在道路上?这样,您的覆盖线不会遮挡数字。这样做的Here's an example(免责声明:我的网站!)。

假设您使用Mapnik渲染瓷砖,您将需要使用TextSymbolizer而不是ShieldSymbolizer。如果您使用TileMill而不是纯Mapnik XML,那么自定义样式(当然)会更容易。