在传单中显示关系(轨迹) [英] Display relation (trail) in leaflet

查看:18
本文介绍了在传单中显示关系(轨迹)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

全部,

当我转到此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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆