使用leaflet地图框架制作离线可视化地图

前一篇博客记录了使用folium配合openstreetmap地图瓦片展现地图并标注地图组件,这里介绍一篇使用leaflet的使用教程,达到的效果和之前一片博客差不多,具体可以查看博客内容:https://sulao.cn/post/701.html

首先我们需要去https://leafletjs.com/download.html下载最新的leaflet文件,因为我是本地的离线地图,所以我们瓦片需要提前下载好,通过IIS提供瓦片图片的访问,因为后端用的flask对图片资源等代理不太好,所以用的IIS

直接上我的示例代码:

{% include 'public/header.html' %}
<link rel="stylesheet" href="{{ url_for('static',filename='leaflet/leaflet.css') }}"/>
<script src="{{ url_for('static', filename='leaflet/leaflet.js') }}"></script>
<div id="map" style="min-height: 570px;"></div>
<script>
var map = L.map('map').setView([30.779008, 114.292145], 11);
L.tileLayer('http://localhost/Tiles/{z}/{x}/{y}.png', {
    attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
    maxZoom: 18,
    id: 'mapbox.streets'
}).addTo(map);
layui.use(['layer', 'jquery'], function(){
    var form = layui.form
    ,layer = layui.layer
    ,$ = layui.jquery;
    layer.ready(function(){
        $.ajax({
            url:'{{ url_for("opod.mapRetrieve") }}',
              type: 'POST',
            dataType: 'json',
              success: function(json){
                console.log(json);
                if(json.code == 0){
                    if(json.no_lonlat > 0){
                        layer.msg("有"+no_lonlat+"个组件没有填写经纬度!");
                    }
                    for(var p in json.data){
                        console.log()
                        L.marker([json.data[p]["lon"], json.data[p]["lat"]]).addTo(map).bindPopup(json.data[p]["name"]).openPopup();
                    }
                }
            }
        });
    });
});
var popup = L.popup();
function onMapClick(e) {
    popup.setLatLng(e.latlng).setContent(e.latlng.toString()).openOn(map);
}
map.on('click', onMapClick);
</script>
{% include 'public/footer.html' %}

实现效果和folium一样,但是folium再后端处理不太方便,所以还是用leaflet来处理地图,组件相对丰富很多

更多组件详细教程可以查看这里https://leafletjs.com/reference-1.5.0.html#map-option

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/702.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。