Leaflet学习笔记

Leaflet 是一个开源并且对移动端友好的交互式地图 JavaScript 库。 它大小仅仅只有 42 KB of JS, 并且拥有绝大部分开发者所需要的所有地图特性 。
Leaflet 简单、高效并且易用。 它可以高效的运行在桌面和移动平台, 拥有着大量的 扩展插件、 优秀的文档、简单易用的 API 和完善的案例, 以及可读性较好的源码 。

一、快速入门

1.1 下载

● 登录官网,下载leaflet,其实也就是一个js包
● 创建web项目,添加一个html文件
● 把解压后的leaflet.css和leaflet.js添加到项目里

1.2 初始化页面

在为地图编写代码之前,你需要在你的页面上完成以下准备步骤:
● 在文档的 head 部分引入 Leaflet CSS 文件:

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.2/dist/leaflet.css"  
    integrity="sha256-sA+zWATbFveLLNqWO2gtiw3HL/lh1giY/Inf1BJ0z14=" 
    crossorigin=""/> 

● 在引入 Leaflet CSS 文件之后引入 Leaflet JavaScript 文件:

<!-- Make sure you put this AFTER Leaflet's CSS -->
 <script src="https://unpkg.com/leaflet@1.9.2/dist/leaflet.js"
   integrity="sha256-o9N1jGDZrf5tS+Ft4gbIK7mYMipq9lqpVJ91xHSyKhg="
   crossorigin=""></script>

● 将具有特定 id 的 div 元素放置在你希望地图所在的位置(比如):

<div id="mapid"></div>

● 确保地图容器定义了固定高度,例如在 CSS 中设置:

<style>
  #mapid { height: 180px; }
  </style>

现在您已准备好初始化地图并使用它做一些事情。

1.2 设置地图

用 Mapbox Streets 瓦片(Tile)底图创建一张伦敦市中心的地图。首先,我们将初始化地图并将其视图设置为我们选择的地理坐标和缩放级别:

var map = L.map('map').setView([51.505, -0.09], 13); 

默认情况下(因为我们在创建地图实例时没有传递任何选项),地图上的所有鼠标和触摸交互都处于启用状态,并且具有缩放和属性控制。
请注意,setView 调用还会返回地图对象——大多数 Leaflet 方法在不返回显式值时的行为都是这样的,这允许你可以很方便的进行类似 jQuery 的链式调用。
接下来我们将添加一个瓦片(Tile)图层到地图中, 在当前示例中它是一个 OpenStreetMap 瓦片图层。创建一个瓦片(Tile)图层通常会涉及为瓦片(Tile)图像、归属文本和图层的最大缩放级别设置 URL 模板。OpenStreetMap 的瓦片对于你的 Leaflet 地图的编程是没有问题的,但是如果你要在生产中使用瓦片,请阅读 OpenStreetMap 的瓦片使用政策。

L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
    maxZoom: 19,
    attribution: '© OpenStreetMap'
}).addTo(map);

确保引入 leaflet.js 文件并配置好 div 后运行所有代码。就是这样,你现在拥有一个运行正常的 Leaflet 地图。
在这里插入图片描述

1.3 绘制图形

除了瓦片(Tile)图层,您还可以轻松地向地图添加其他内容,包括标记、折线、多边形、圆形和弹出窗口。
● 让我们添加一个标记:

var marker = L.marker([51.5, -0.09]).addTo(map);

● 添加圆

var circle = L.circle([51.508, -0.11], {
    color: 'red',
    fillColor: '#f03',
    fillOpacity: 0.5,
    radius: 500
}).addTo(map);

● 添加多边形

var polygon = L.polygon([
    [51.509, -0.08],
    [51.503, -0.06],
    [51.51, -0.047]
]).addTo(map);

1.4 使用popups(弹窗)
当您想将某些信息附加到地图上的特定对象时,通常会使用 Popups。Leaflet 有一个快捷方式:

marker.bindPopup("<b>Hello world!</b><br>I am a popup.").openPopup();
circle.bindPopup("I am a circle.");
polygon.bindPopup("I am a polygon.");

尝试点击我们的对象。该 bindPopup 方法将带有指定 HTML 内容的弹出窗口附加到您的标记,以便在您单击对象时显示弹出窗口,并且该 openPopup 方法(仅适用于标记)立即打开附加的弹出窗口。
您还可以将弹出窗口用作图层(当您需要的不仅仅是将弹出窗口附加到对象时):

var popup = L.popup()
    .setLatLng([51.513, -0.09])
    .setContent("I am a standalone popup.")
    .openOn(map);

这里我们使用 openOn 而不是 addTo 因为它在打开一个新窗口时,先前打开的弹出窗口会自动关闭。

1.5 处理事件

每次在 Leaflet 中触发某些事件时,例如用户单击标记或地图缩放更改,相应的对象都会发送一个事件,您可以使用函数订阅该事件。它允许您对用户交互做出反应:

function onMapClick(e) {
    alert("You clicked the map at " + e.latlng);
}

map.on('click', onMapClick);

每个对象都有属于自己的一组事件。监听器、函数的第一个参数是一个事件对象——它包含关于发生的事件的有用信息。例如,地图点击事件对象(在上面的例子中的e)有一个 latlng 属性,它是点击发生的位置。
让我们通过使用 popup 而不是 alert 来改进我们的示例:

var popup = L.popup();

function onMapClick(e) {
    popup
        .setLatLng(e.latlng)
        .setContent("You clicked the map at " + e.latlng.toString())
        .openOn(map);
}

map.on('click', onMapClick);

二、加载图层

2.1 地图资源

高德谷歌腾讯天地图地图瓦片url_才华横溢吴道简的博客-CSDN博客_瓦片地图

2.2 加载底图

将一堆图层合并到一个分组

var littleton = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'),
    denver    = L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
    aurora    = L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.'),
    golden    = L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.');

您可以使用 LayerGroup 类执行以下操作,而不是直接将它们添加到地图中:

var cities = L.layerGroup([littleton, denver, aurora, golden]);

leaflet有两种类型的图层:

● base layer:互斥的图层(在地图上同一时间只能有一个图层可见),比如tile layers;
● overlayers:在base layer之上放置的其他东西。

base layer形式加载,那么我们一次就只能显示其中一个(而overlayers可以同时显示多个),可以通过 layerControl 切换图层。

三、添加图标

如果我们有多个点要添加,每个点都这样写那

var transportIcon = L.Icon.extend({
    options: {
        iconSize: [20, 20], 
        iconAnchor: [0, 0], 
    }
});
 
var carIcon = new transportIcon({iconUrl: 'car.png'}),
    planeIcon = new transportIcon({iconUrl: 'plane.png'}),
    busIcon = new transportIcon({iconUrl: 'bus.png'});
 
L.marker([39.856,116.431], {icon: carIcon}).addTo(map);
L.marker([39.859,116.435], {icon: planeIcon}).addTo(map);
L.marker([39.851,116.439], {icon: busIcon}).addTo(map);

四、交互式地图

交互式地图

五、缩放

缩放

六、图像、视频、SVG叠加

图像、视频、SVG叠加

七、接口文档

接口

在这里插入图片描述

八、插件库

插件库

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: leaflet wmts 是一个在 Leaflet 地图库中集成的插件,用于加载和显示 Web Map Tile Service(WMTS)数据。WMTS 是一种标准化的 Web 地图服务协议,用于切片瓦片数据的传输和渲染。 使用 leaflet wmts 插件,我们可以通过指定 WMTS 服务的 URL 和图层名称来加载地图瓦片。插件会自动处理瓦片的分辨率、坐标系和样式等属性。用户还可以使用一些相关的选项来自定义地图的样式、缩放级别范围和图层顺序等。 在 Leaflet 中使用 WMTS 数据源可以在地图上显示精确的地理信息。WMTS 数据源通常由预先切片的地理数据组成,因此加载速度较快,并且可以实现地图的流畅缩放和平移。此外,WMTS 还支持多种坐标系和投影方式,能够适配不同的地理数据源和地图需求。 总的来说,leaflet wmts 插件为 Leaflet 提供了对 WMTS 数据源的完整支持,使开发者能够通过 WMTS 服务加载和显示地图瓦片。它提供了简单易用的 API 接口,使得集成 WMTS 数据到 Leaflet 地图应用变得更加容易。无论是展示地理信息还是实现交互式地图功能,leaflet wmts 都是一个非常有用的工具。 ### 回答2: leaflet wmts指的是在Leaflet中使用Web Map Tile Service(WMTS)来加载和显示地图数据。WMTS是一种用于传输地图瓦片的网络服务标准,它通常用于在Web浏览器中呈现地图图层。 要使用WMTS,我们首先需要在Leaflet中添加WMTS插件。然后,我们需要获取WMTS的服务URL和图层名称。通过将这些信息传递给Leaflet的WMTS函数,我们可以创建一个WMTS图层。 WMTS的每一个图层由许多瓦片(tiles)组成,每个瓦片代表地图的一小部分。当用户缩放或平移地图时,Leaflet会动态加载和显示相应的瓦片。由于瓦片是按需加载的,因此在显示大范围地图时,可以提高性能和效率。 在Leaflet中使用WMTS可以实现高性能的地图显示,特别是对于大规模的地图数据。通过WMTS,我们可以加载和显示具有高分辨率和复杂样式的地图。此外,WMTS还支持瓦片缓存,可以提高地图的加载速度,并减少对服务器的请求。 总之,leaflet wmts是一种在Leaflet中利用WMTS标准加载和显示地图数据的方法。它可以在Web浏览器中使用,提供高性能和高效率的地图显示,并支持高分辨率和复杂样式的地图。它是构建交互式和可定制的地图应用程序的重要工具。 ### 回答3: leaflet是一个开源的JavaScript库,用于在网页上创建交互式地图。WMTS(Web Map Tile Service)是一种用于动态地图切片的网络地图服务标准。所以,leaflet WMTS可以理解为在Leaflet中使用WMTS服务。 使用leaflet的WMTS插件,我们可以轻松地在Leaflet地图上加载和显示WMTS地图服务。首先,我们需要获取WMTS地图服务的URL地址和图层ID。然后,使用leaflet的TileLayer.WMTS方法创建一个WMTS图层对象。该方法需要传入WMTS服务的URL地址、图层ID和一些其他配置参数,例如最小、最大缩放级别等。创建完成后,我们可以使用addTo()方法将图层添加到Leaflet地图上。 为了使WMTS图层正确显示,我们还需要提供WMTS服务的坐标参考系统(CRS)信息。可以通过定义一个CRS对象,并设置其属性来指定CRS信息。然后,在创建WMTS图层时,使用该CRS对象作为可选参数传入。 在将WMTS图层添加到Leaflet地图上后,可以使用其他Leaflet提供的方法和事件来控制图层的显示,例如设置地图中心点、缩放级别、图层背景色等。还可以通过添加相应的控件来实现地图的放大、缩小、测量等功能。 总之,leaflet WMTS提供了一种简单方便的方法在Leaflet地图中加载和显示WMTS地图服务。通过使用leaflet的WMTS插件,我们可以轻松地创建具有丰富交互性和可定制性的地图应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值