在传单中显示关系(轨迹) [英] Display relation (trail) in leaflet
本文介绍了在传单中显示关系(轨迹)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
全部,
当我转到此URL:OpenStreetMap时,我看到顶部有一个带有关系的地图(我假设这是所显示的线索的术语)。
我正在尝试将此踪迹也显示在我的Django网站上,在那里我正在使用Django-LEAFLE。
目前我的代码如下:
<script>
function map_init_basic (map, options) {
map.setZoom(16);
map.setView([51.6020, 4.8514]);
}
</script>
{% leaflet_map "trailmap" callback="window.map_init_basic" %}
这会将地图设置到正确的区域,但如何添加实际的踪迹?
致以最诚挚的敬意。
推荐答案
使用OSMPythonTools可以使用overpass接口从osm数据库中获取轨迹关系,并将其几何图形提取为坐标数组:
from OSMPythonTools.overpass import Overpass
overpass = Overpass()
def fetch_relation_coords(relation):
rel = overpass.query('rel(%s); (._;>;); out;' % relation)
coords = [el.geometry().coordinates for el in rel.elements() if el.type() == 'node']
# Convert (lng, lat) to (lat, lng)
latlngs = [[x[1], x[0]] for x in coords]
return latlngs
latlngs = fetch_relation_coords("6754945")
# [[51.602685, 4.861282], [51.60629, 4.851437], [51.599504, 4.838481], [51.599561, 4.839231], ...]
我对Django还不够熟悉,无法理解如何将生成的坐标数组放到您的网页上,但一旦您将其放入了Java脚本中,您就可以使用以下命令将其作为折线添加到您的小叶地图上:
L.polyline(latlngs).addTo(map);
这篇关于在传单中显示关系(轨迹)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文