Leaflet基本用法

570 阅读2分钟

使用 阿里云地理工具(datav.aliyun.com/portal/scho…) 获取相应的地理JSON数据,用于对地图边界绘制。

image.png

如何使用leaflet?

这里用HTML5进行操作;

因为我是用的是Leaflet库,所以要引入JavaScript 和 CSS 文件(可参考官网leafletjs.com/)

容器创建:
这里给容器设置宽100vw,高100vh;并清除默认的margin及padding值;
<style type="text/css">
    body {
        margin: 0;
        padding: 0;
    }

    #map {
        width: 100vw;
        height: 100vh;
    }
</style>

首先要有一个地图中心点,以及缩放比例

这里以中国版图为例,其中心点为北纬34°32′27.00″,东经108°55′25.00″。

在此基础上声明 map 变量并使用 Leaflet map 对其进行初始化;

const map = L.map('map', { center: [35.8617, 104.1954], zoom: 3.5 }); 其中L代表Leaflet的 JavaScript 库中所有的内容,并且很多功能通过L进行扩展。

center代表其中心点经纬度

zoom为缩放比例

也可以使用setView()方法进行初始化

var map = L.map("map").setView([35.8617, 104.1954], 6) 添加切片图层,这将是 Leaflet 地图的基础图层。切片图层是通过服务器通过直接 URL 请求访问的一组切片。此切片图层将地理边界添加到地图中。

也可以添加多个矢量图层的选项。将街景作为图层之一;

const basemaps = {
StreetView: L.tileLayer('https\://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',   {attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'}),
Topography: L.tileLayer.wms('<http://ows.mundialis.de/services/service>?',   {layers: 'TOPO-WMS'}),
Places: L.tileLayer.wms('<http://ows.mundialis.de/services/service>?', {layers: 'OSM-Overlay-WMS'})
}

Leaflet 还提供了让用户控制要渲染的图层的功能。使用该功能,我将在页面右上角添加一个选项菜单按钮,让您选择要覆盖在地图上的三个图层中的哪一个;

L.control.layers(basemaps).addTo(map); 设置wms为默认图层

basemaps.Places.addTo(map) 将开始的json数据,在加载GeoJSON数据后,可以通过feature对象获取到各省份的信息,

可点击对应区域使其标注

style: function (feature) {
return {
fillColor: 'green',
weight: 2,
opacity: 1,
color: 'white',
fillOpacity: 0.7
};
},
onEachFeature: function (feature, layer) {
// 添加省份名称标注
layer.bindPopup(feature.properties.name);
            // 添加鼠标悬停效果
            layer.on('mouseover', function () {
                this.setStyle({
                    fillOpacity: 1,
                });
            });
            layer.on('mouseout', function () {
                this.setStyle({
                    fillOpacity: 0.7,
                });
            });

            layer.on("click", function () {
                this.setStyle({
                    fillOpacity: 0.7,
                    color: "red",
                    fillColor: "orange"
                })
            })
        }
    }).addTo(map);

至此:

image.png

image.png