【leaflet】1. 初见

▒ 目录 ▒

    • 🛫 导读
      • 需求
      • 开发环境
    • 1️⃣ 概念
      • 概念解释
      • 特点
    • 2️⃣ 学习路线图
    • 3️⃣ html示例
    • 🛬 文章小结
    • 📖 参考资料

🛫 导读

需求

要做游戏地图了,看到大量产品都使用的leaflet,所以开始学习这个。

开发环境

版本号描述
文章日期2023-11-09
操作系统Win10 - 22H219045.3570
leaflet1.9.4

1️⃣ 概念

leaflet 是一个开源的 JavaScript 库,用于创建交互式的地图应用程序。
它提供了一系列的工具和类,用于实现地图的基本功能,如添加瓦片图层、绘制标记和路径等。

概念解释

下面是leaflet 中的一些概念解释:

  1. 地图(Map):leaflet 中的地图是指一个 2D 空间的表示,可以包含多个图层
    每一个图层代表一种类型的地理信息,如地形、街道、行政区划等。
    地图可以显示在网页上,用户可以通过缩放、平移和旋转等操作来查看地图内容。
  2. 图层(Layer):leaflet 中的图层是指一个地理信息的显示层
    每一个图层都有一个对应的Layer类,该类负责处理图层的添加、删除、缩放等操作。
    leaflet 支持多种类型的图层,如
    • 矢量图层(VectorLayer)
    • 栅格图层(GridLayer)
    • 热力图:支持在地图上显示热力图效果,用于表示某个地区的人气、访问量等数据。
    • 聚类图:支持在地图上显示聚类图效果,用于表示某个地区的人口密度、分布情况等数据。
    • 地形图层(TerrainLayer)等。
  3. 标记(Marker):leaflet 中的标记是指在地图上显示的一个标记点。
    每一个标记都是一个Marker类的实例,该类负责处理标记的添加、删除、缩放等操作。
    标记可以表示一个特定的地理位置,通常用于显示地图上的兴趣点等信息
  4. 路径(Polyline):leaflet 中的路径是指在地图上绘制的一条连续的线条
    每一个路径都是一个Polyline类的实例,该类负责处理路径的添加、删除、缩放等操作。
    路径通常用于表示地图上的道路、河流、边界等信息。
  5. 事件(Event):leaflet 中的事件是指在地图上发生的一些交互操作
    例如,当用户点击地图、缩放地图、移动地图等操作时,都会触发相应的事件。
    leaflet 提供了丰富的事件处理机制,开发人员可以通过监听这些事件来响应用户的交互操作。

特点

总体来说,leaflet 是一款非常优秀的 WebGIS 库,适用于需要在移动端或 Web 平台上展示地理信息的应用。

  1. 易用性:leaflet 使用简单,不需要任何特殊的依赖,支持轻量级的 API,容易上手。
  2. 移动端兼容性:leaflet 在移动端设备上也能很好地兼容,并且支持响应式设计,自适应不同的屏幕大小。
  3. 强大的功能:leaflet 支持多图层、标记、路径、热点等多种地理信息的展示,同时还支持多边形、圆形等几何图形的绘制。
  4. 支持多种地图数据源:leaflet 支持加载多种常见的地图数据源,如 OpenStreetMap、Google Maps、ESRI basemaps 等,可以根据需求自由选择。
  5. 可扩展性:leaflet 提供了丰富的插件生态,允许开发者自定义功能,例如添加仪表盘、进度条等。
  6. 可交互性:拖拽、放大缩小、跳到指定位置、键盘控制、事件、标记拖动。
  7. 视觉特效:缩放动效、

2️⃣ 学习路线图

  1. 官方网站开始,该网站为图书馆提供了全面的指南和参考文档。
  2. 熟悉 Web 开发的基础知识,包括 HTML、CSS 和 JavaScript,因为它们对于使用 Leaflet 创建交互式地图至关重要。
  3. 通过从官方网站下载库或使用 npm 或 yarn 等包管理器来安装 Leaflet。
  4. 探索 Leaflet API 并学习如何使用其各种功能,例如创建地图、添加标记和弹出窗口、显示图块和图层以及处理用户交互。
  5. 通过构建简单的项目来练习,例如您家乡的地图或您最喜欢的地方的地图,随着您对 Leaflet 的熟悉程度越来越高,逐渐增加项目的复杂性。
  6. 通过参与在线论坛加入传单社区,获取更多资讯。

3️⃣ html示例

面对这么强大的leaflet,我们这就来实战一下,先看看简单的效果:
在这里插入图片描述

  1. 加载 leaflet 库:在你的 HTML 文件中,使用 script 和 link 标签加载 leaflet 库。

    <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
    
  2. 创建地图容器:在你的 HTML 文件中创建一个地图容器,并设置其 id 为"map"。

    <div id="map"></div>
    
  3. 创建 leaflet 地图实例:使用 leaflet 库创建一个地图实例,并将其绑定到地图容器。

         var map = new L.Map('map', {center: new L.LatLng(39.86,116.45),zoom: 4});
    
  4. 加载底图:使用 leaflet 的tileLayer类加载底图。你可以使用 leaflet 提供的在线底图服务,如 mapbox,OpenStreetMap 等,或者加载本地的瓦片地图。

     L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {attribution: '夜猫逐梦 @CartoDB Positron>',maxZoom: 18}).addTo(map);
    
  5. 添加路线:使用 leaflet 的Polyline类在地图上添加路线。你需要提供路线的起点和终点坐标,以及路线的样式。

    var polyline = L.polyline([[51.505, -0.12], [51.515, -0.125]], {color: 'red',weight: 3
    }).addTo(map);
    
  6. 增加标记及popup。

    var bj = L.marker([39.92,116.46]).bindPopup('这里是北京');
    var sh = L.marker([31.213,121.445]).bindPopup('这里是上海');
    var gz = L.marker([23.16,113.23]).bindPopup('这里是广州');
    var cities = L.layerGroup([bj, sh, gz]).addTo(map);
    

完整代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script><link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /><title>Document</title><style>html, body, #map { height: 100%; }</style>
</head>
<body><div id="map"></div><script>var map = new L.Map('map', {center: new L.LatLng(39.86,116.45),zoom: 4});L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {attribution: '夜猫逐梦 @CartoDB Positron',maxZoom: 18}).addTo(map);var polyline = L.polyline([[39.92,116.46], [31.213,121.445]], {color: 'red',weight: 3}).addTo(map);var bj = L.marker([39.92,116.46]).bindPopup('这里是北京');var sh = L.marker([31.213,121.445]).bindPopup('这里是上海');var gz = L.marker([23.16,113.23]).bindPopup('这里是广州');var cities = L.layerGroup([bj, sh, gz]).addTo(map);</script>
</body>
</html>

🛬 文章小结

总体来说,leaflet 是一款非常优秀的 WebGIS 库,适用于需要在移动端或 Web 平台上展示地理信息的应用。
本节对其做简单的介绍和使用演示。

其中使用leaflet需要注意以下几点:

  • 必须引入leaflet.css,否则贴片会出现乱序的情况。
  • 网上很多地图地址都无法访问,这里使用http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png,虽然慢了点,但是能用。
  • leaflet版本使用的是1.9.4,每个版本的接口可能不一样,出错了就看下控制台。

以后会不断写一些示例功能,或者翻译官网有用的文章。

📖 参考资料

  • leaflet官网:https://leafletjs.com/index.html
  • 官网例子: https://leafletjs.com/examples
  • api文档:https://leafletjs.com/reference.html
  • Leaflet源码解析–TileLayer(某不错的网站): https://www.giserdqy.com/secdev/leaflet/19903/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/166749.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《嵌入式虚拟化技术与应用》:深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!

目录 为什么嵌入式系统需要虚拟化技术&#xff1f; 专家推荐 本书适合谁&#xff1f; 内容简介 本书目录 权威作者团队 随着物联网设备的爆炸式增长和万物互联应用的快速发展&#xff0c;虚拟化技术在嵌入式系统上受到了业界越来越多的关注、重视和实际应用。嵌入式系统…

基于Jaccard相似度的推荐算法---示例

目录 数据展示推荐算法的分类基于相似度基于流行度/上下文/社交网络 Jaccard相似度分析数据的特点可以考虑的方法计算方法优缺点计算用户之间的Jaccard相似度获取与给定最相似的10个用户对1713353的用户推荐10本书 数据展示 import pandas as pd import numpy as np# 读取CSV文…

直播实时数仓基于DataLeap开放平台在发布管控场景的业务实践

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 背景 业务背景 随着字节业务的高速增长&#xff0c;业务场景越来越丰富&#xff0c;业务基于数据做的决策也越来越多&#xff0c;对数据的时效性要求也越来越高。…

【ElasticSearch系列-06】Es集群架构的搭建以及集群的核心概念

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…

Lightroom Classic 2021 v10.4

Lightroom Classic 2021是一款一体化照片管理和编辑解决方案。 它面向专业人士和高端用户&#xff0c;支持各种不同相机的原始图像编辑&#xff0c;包括Canon、Apple、Casio、Contax、DxO、Epson等品牌。这样可以将原图像快速导入进行编辑&#xff0c;轻松满足不同用户的需求。…

echart的tooltip显示不同的单位

效果 实现 在每个series中添加不同的 tooltip: { valueFormatter: function (value) { return value.toFixed(0) ‘A’; } }, 代码如下 var option {// grid: {// left: -13vw,//左边距72px// right: 32%,// bottom: 64%,// top:…

SpringBoot使用Mybatis

SpringBoot使用Mybatis Orm 框架的本质是简化编程中操作数据库的编码&#xff0c;发展到现在基本上就剩两家了&#xff0c;一个是宣称可以不用写一句 Sql 的 Hibernate&#xff0c;一个是可以灵活调试动态 Sql 的 Mybatis ,两者各有特点&#xff0c;在企业级系统开发中可以根…

单例模式 rust和java的实现

文章目录 单例模式介绍应用实例&#xff1a;优点使用场景 架构图JAVA 实现单例模式的几种实现方式 rust实现 rust代码仓库 单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建…

10 个适用于 Windows 的最佳 PDF 编辑器,用于轻松编辑 PDF 文件

PDF 是当今最流行的文件格式之一。Adobe 于 1993 年开发了 PDF 文件格式。PDF&#xff08;便携式文档格式&#xff09;主要用于存储复杂的文本文档和电子书。PDF 文件包含固定的布局属性&#xff0c;并且可以存储大量文本和图形。PDF 文件格式主要用于分发大型文档。 使用 PDF…

单源最短路的简单应用

1.dijkstra维护最长路 下面这个是讨论区的一个佬的理解&#xff0c;非常的nice 总结一句话&#xff0c;dijkstra的贪心保证了每次选定的点在之后都不会被其他点所更新了 同理维护最长路的时候我们发现&#xff0c;如果权值是0-1的话&#xff0c;选定的最大值在之后不会变的更大…

【服务发现与配置】Consul特性及搭建

文章目录 一、前言二、概念2.1、什么是Consul&#xff1f;2.2、Consul具有哪些特点?2.3、Consul 架构图2.4、Consul的使用场景 三、安装3.1. 下载3.2. 解压3.3. 拷贝到usr目录下3.4. 查看 安装是否成功3.5. 启动 四、Consul 开机自启动4.1. 路径/usr/lib/systemd/system/&…

4 Paimon数据湖之Hive Catalog的使用

更多Paimon数据湖内容请关注&#xff1a;https://edu.51cto.com/course/35051.html Paimon提供了两种类型的Catalog&#xff1a;Filesystem Catalog和Hive Catalog。 Filesystem Catalog&#xff1a;会把元数据信息存储到文件系统里面。Hive Catalog&#xff1a;则会把元数据…