提交 dc99e79a 编写于 作者: W wizardforcel

2022-01-08 23:59:20

上级 4ab766e8
# 零、简介
地图总是有神奇的地方。自从第一批人类在泥土中抓出一个图像来分享好的狩猎场的位置以来,我们就对地图以及它们能传递多少信息着迷了。几个世纪以来,地图在准确性和复杂性方面都取得了巨大的进步,但直到最近,随着互联网的出现,地图仍然主要是基于纸张的。互联网是共享地图和寻找大量有趣的空间数据以创建地图的完美媒介。
不久前,将任何形式的交互式地图放在网络上的前景足以让最老练的开发人员做噩梦。如今,我们有了一些惊人的工具,即使是没有经验的开发人员也可以很容易地创建高度复杂的网络地图应用程序,只需要一个文本编辑器和一个互联网连接。创建令人惊叹的、功能强大的网络地图应用程序的最新最好的技术之一是 Leaflet.js。只需掌握一点 HTML、CSS 和一些基本的 JavaScript 知识,再加上本指南,您就拥有了开始使用所需的一切。
\ No newline at end of file
小叶. js 是一个超轻量级的映射库。它由大约 34KB 的压缩 JavaScript 组成,绝对没有外部依赖。小叶. js 真正不同寻常的是,它在不牺牲特性的情况下做到了这一点。尽管随着时间的推移,许多框架很快变得臃肿和复杂,但 Labber . js 在场景中仍然相对较新,并且是由开发人员 Vladimir Agafonkin 从头开始设计的,简单、直观且易于使用。
# 一、认识 Leaflet.js
Leaflet.js 是开源的,有一个非常活跃的开发者社区。尽管核心库在设计上非常小(为了避免你的应用程序不得不下载大量它不依赖的代码),有许多插件可以用来扩展你的网络地图应用程序的功能。所以,如果你在看另一个网络地图框架,并想,“如果小叶. js 做到了,那不是很酷吗?”你几乎可以肯定,某个地方的某个人也想到了同样的事情,并为其编写了一个插件。
Leaflet. js 是一个超轻量级的映射库。它由大约 34KB 的压缩 JavaScript 组成,绝对没有外部依赖。Leaflet. js 真正不同寻常的是,它在不牺牲特性的情况下做到了这一点。尽管随着时间的推移,许多框架很快变得臃肿和复杂,但 Labber . js 在场景中仍然相对较新,并且是由开发人员 Vladimir Agafonkin 从头开始设计的,简单、直观且易于使用。
Leaflet.js 是开源的,有一个非常活跃的开发者社区。尽管核心库在设计上非常小(为了避免你的应用程序不得不下载大量它不依赖的代码),有许多插件可以用来扩展你的网络地图应用程序的功能。所以,如果你在看另一个网络地图框架,并想,“如果Leaflet. js 做到了,那不是很酷吗?”你几乎可以肯定,某个地方的某个人也想到了同样的事情,并为其编写了一个插件。
我可以继续介绍 lafob . js 的伟大设计及其惊人的功能,但这是一个简洁的指南,我们希望您能立即站起来并运行,并帮助您自己发现这些东西。让我们开始吧。
......@@ -69,7 +71,7 @@ Apache 要求您将网页放在其 htdocs 文件夹中,在我的 XAMPP 环境
有两种方法可以在应用程序中使用 libert . js:
1. 通过内容交付网络(CDN)参考该库的托管版本。
2. 下载小叶. js 库,并将其托管在您自己的网络服务器上。
2. 下载Leaflet. js 库,并将其托管在您自己的网络服务器上。
#### 通过社区发展网络获取传单
......@@ -90,7 +92,7 @@ Apache 要求您将网页放在其 htdocs 文件夹中,在我的 XAMPP 环境
```
| ![](img/00006.gif) | 注意:代码清单 2 中显示的 URL 应该引用最新稳定版本的小叶. js,在编写本文时,它是 0.7.3。查看[传单. js 网站](http://www.leafletjs.com/)获取最新的稳定版本。 |
| ![](img/00006.gif) | 注意:代码清单 2 中显示的 URL 应该引用最新稳定版本的Leaflet. js,在编写本文时,它是 0.7.3。查看[传单. js 网站](http://www.leafletjs.com/)获取最新的稳定版本。 |
我们将在本书的例子中使用 CDN。
......@@ -98,12 +100,12 @@ Apache 要求您将网页放在其 htdocs 文件夹中,在我的 XAMPP 环境
如果你想自己主持 Leaflet.js,你有几个选择:
1.[小叶. js 网站](http://www.leafletjs.com/)下载一个预建包到你的文档根,在<脚本><链接>标签中设置合适的路径。包档案包含迷你化的 JavaScript 代码(小叶. js)和一个名为小叶-src.js 的未统一版本,这在调试时会有所帮助。它还包括所需的 CSS。
2.[GitHub](https://github.com/Leaflet/Leaflet/releases) 下载源代码,并使用 Node.js 构建它。这让您可以访问几乎所有内容,包括原始源代码、单元测试等等。如果你想很好地了解小叶. js 的内部,甚至可能添加新的特性,让它对我们其他人更好,你就需要这样做!有关完整的说明,请参见 LinkedE . js 网站。
1.[Leaflet. js 网站](http://www.leafletjs.com/)下载一个预建包到你的文档根,在<脚本><链接>标签中设置合适的路径。包档案包含迷你化的 JavaScript 代码(Leaflet. js)和一个名为Leaflet-src.js 的未统一版本,这在调试时会有所帮助。它还包括所需的 CSS。
2.[GitHub](https://github.com/Leaflet/Leaflet/releases) 下载源代码,并使用 Node.js 构建它。这让您可以访问几乎所有内容,包括原始源代码、单元测试等等。如果你想很好地了解Leaflet. js 的内部,甚至可能添加新的特性,让它对我们其他人更好,你就需要这样做!有关完整的说明,请参见 LinkedE . js 网站。
### 为地图创建 <分区>元素
在编写任何小叶. js 代码之前,您需要在页面上创建一个空间来存放地图。只需创建一个
在编写任何Leaflet. js 代码之前,您需要在页面上创建一个空间来存放地图。只需创建一个
元素,并给它一个合适的 id 属性,以便您以后可以在代码中引用它。您还必须(至少)为指定一个高度属性。如果不指定高度属性,地图将不会显示。如果需要,也可以指定宽度属性。如果您选择不这样做,则地图将覆盖其父元素的整个宽度(在以下示例中是标签)。
......@@ -190,7 +192,7 @@ Apache 要求您将网页放在其 htdocs 文件夹中,在我的 XAMPP 环境
这是怎么回事?
* L.map('map ')是小叶. js 映射构造函数。构造函数接受两个参数:地图将显示的 HTML 元素(在我们的例子中,就是地图),以及(可选的)为地图的外观和行为定义特定选项的对象文字。在本例中,我们没有指定地图选项对象。参见[活页. js 文档](http://leafletjs.com/reference.html#map-options)中的全部地图选项。
* L.map('map ')是Leaflet. js 映射构造函数。构造函数接受两个参数:地图将显示的 HTML 元素(在我们的例子中,就是地图),以及(可选的)为地图的外观和行为定义特定选项的对象文字。在本例中,我们没有指定地图选项对象。参见[活页. js 文档](http://leafletjs.com/reference.html#map-options)中的全部地图选项。
* 。setView(…)一旦我们有了地图对象,我们就调用它的 setView()方法来传入地图的*范围*。范围是我们想要显示的可见区域。setView()方法接受两个参数。第一个参数是表示地图中心的纬度和经度的数组,第二个参数是表示缩放级别的数字。
* 然后,我们用这两种方法定义的映射对象存储在我们的本地 JavaScript 变量映射中。
......
小叶. js 区分了两种基本类型的地图图层:*基础图层**叠加图层*。我们在上一章中添加到地图中的切片图层是一个基础图层的示例。
# 二、处理基本图层
Leaflet. js 区分了两种基本类型的地图图层:*基础图层**叠加图层*。我们在上一章中添加到地图中的切片图层是一个基础图层的示例。
基础图层是地图,通常来源于外部提供者,如 OpenStreetMap 或 MapBox,通常包含丰富而复杂的制图,用于为您添加到地图中的其他数据设置地理上下文。“其他数据”通常是一个叠加。任何时候都只有一个基础地图图层可见,但是您可以在基础图层上“覆盖”多个叠层。
......
# 三、添加覆盖
在最后一章中,我们对基础地图和叠加地图进行了区分。基础地图为构成应用程序基础的数据提供了一个“背景”,通常是以覆盖的形式。
这些数据可以来自任何地方。您可以自己提供(例如,如果您经营一家自行车连锁店,并希望您的用户能够找到最近的一家),或者使用来自其他来源的数据(例如来自政府的人口统计数据或通过网络应用编程接口从远程服务器获得的数据,例如雅虎天气)。您甚至可能希望您的用户自己创建数据(例如,如果您正在构建一个应用程序,允许用户报告他们当地社区的涂鸦)。
......@@ -43,9 +45,9 @@ var pt = L 点(300,400);
```
标记类有一大堆不同的属性,您可以通过在选项对象中指定它们来进行设置。有关完整的列表,请参考小叶. js 文档,但是一些更有趣的包括图标、可拖动和不透明。
标记类有一大堆不同的属性,您可以通过在选项对象中指定它们来进行设置。有关完整的列表,请参考Leaflet. js 文档,但是一些更有趣的包括图标、可拖动和不透明。
默认情况下,小叶. js 在地图上用一个简单的蓝色图钉表示一个标记。您可以使用 L.icon 类定义自己的自定义标记图标。L.icon 类有几个属性可以让您微调图标的外观,包括视网膜显示的属性、图标大小以及工具提示和阴影的位置,但最起码您必须设置图标图形所在的 iconUrl 属性:
默认情况下,Leaflet. js 在地图上用一个简单的蓝色图钉表示一个标记。您可以使用 L.icon 类定义自己的自定义标记图标。L.icon 类有几个属性可以让您微调图标的外观,包括视网膜显示的属性、图标大小以及工具提示和阴影的位置,但最起码您必须设置图标图形所在的 iconUrl 属性:
代码清单 14:使用图标类定义自定义图标
......@@ -77,7 +79,7 @@ var pt = L 点(300,400);
您可以通过调整标记选项对象中不透明度属性的值来使标记或多或少地透明。默认值为 1.0(完全不透明),值为 0.0 则完全透明。
在地理空间术语中,线只是点的集合。要在地图上绘制一个,我们需要创建一个折线类的对象。折线是矢量图层的一种类型,它将描述折线的线渲染为矢量图形。所有的小叶. js 矢量图形都是从一个名为 Path 的抽象类中派生出来的,这个抽象类你永远不会直接实例化,但是它的属性、方法和事件在子类中是可用的。
在地理空间术语中,线只是点的集合。要在地图上绘制一个,我们需要创建一个折线类的对象。折线是矢量图层的一种类型,它将描述折线的线渲染为矢量图形。所有的Leaflet. js 矢量图形都是从一个名为 Path 的抽象类中派生出来的,这个抽象类你永远不会直接实例化,但是它的属性、方法和事件在子类中是可用的。
多段线是从一组线对中创建的,因此要定义一条多段线,我们必须至少提供两个这样的线对:一条线的起点和终点。如果我们需要我们的线蜿蜒,我们可以添加任意多的其他线对。如果直线由许多线段组成,可以考虑使用折线类 smoothFactor 属性,该属性简化了直线,使 Labble . js 绘制速度更快。您需要进行实验,以在准确性和性能之间取得适当的平衡。
......@@ -134,7 +136,7 @@ var pt = L 点(300,400);
图 13:地图上显示的多边形
某些多边形,如圆形和矩形,在网络地图应用程序中非常常见,通常表示地理边界,因此,小叶. js 提供了一些用于创建这些形状的实用程序类。不出所料,这就是 L.circle 类和 L.rectangle 类。
某些多边形,如圆形和矩形,在网络地图应用程序中非常常见,通常表示地理边界,因此,Leaflet. js 提供了一些用于创建这些形状的实用程序类。不出所料,这就是 L.circle 类和 L.rectangle 类。
L.rectangle 类是 L.polygon 的子类,因此您可以使用 L.polygon 的所有属性、方法和事件,以及*及其*父类 L.path 的属性、方法和事件
......@@ -448,9 +450,9 @@ L.rectangle 类是 L.polygon 的子类,因此您可以使用 L.polygon 的所
图 20:多多边形中的每个多边形显示相同的弹出窗口
因为试图在您的小叶. js 应用程序中发现您想要表示的位置和几何图形的坐标可能是一件痛苦的事情,所以我编写了一个简单的工具,您可以在这里访问。
因为试图在您的Leaflet. js 应用程序中发现您想要表示的位置和几何图形的坐标可能是一件痛苦的事情,所以我编写了一个简单的工具,您可以在这里访问。
要使用该工具,请放大到要创建要素的位置,然后使用地图左侧的绘制工具栏,并按照说明创建所需的几何图形。创建该几何图形的小叶. js 代码将出现在左侧窗格中。点击**复制到剪贴板**,代码就可以粘贴到您选择的编辑器或 IDE 中了。
要使用该工具,请放大到要创建要素的位置,然后使用地图左侧的绘制工具栏,并按照说明创建所需的几何图形。创建该几何图形的Leaflet. js 代码将出现在左侧窗格中。点击**复制到剪贴板**,代码就可以粘贴到您选择的编辑器或 IDE 中了。
![](img/00024.jpeg)
......
# 四、处理事件
现在,您有了一个包含地图和一些数据的应用程序,您通常会想要一种用户与之交互的方式。到目前为止,您启用的唯一交互是用户能够单击覆盖图中的功能,并看到您使用绑定到它的弹出窗口。bindPopup()方法。
当事情发生时,小叶. js 中的每个控件都会发出事件来提醒您的应用程序。例如,L.Map 类在编写时支持 34 个事件。这些事件的范围从您期望任何编程环境中的任何控件都具有的事件类型(如焦点、鼠标悬停和单击)到非常特定于它所提供的功能的事件类型(如重叠添加(当新的重叠添加到地图中时)和移动(当地图范围发生变化时))。
当事情发生时,Leaflet. js 中的每个控件都会发出事件来提醒您的应用程序。例如,L.Map 类在编写时支持 34 个事件。这些事件的范围从您期望任何编程环境中的任何控件都具有的事件类型(如焦点、鼠标悬停和单击)到非常特定于它所提供的功能的事件类型(如重叠添加(当新的重叠添加到地图中时)和移动(当地图范围发生变化时))。
此表列出了 L.Map 中支持的事件。它显示了事件的名称、事件触发时返回的对象以及描述。
......@@ -45,9 +47,9 @@
| 人口 | 弹出事件 | 当弹出窗口通过打开时。openPopup() |
| popupclose | 弹出事件 | 当弹出窗口通过关闭时。closePopup() |
这是小叶. js 中一个控件的事件列表(虽然可以说是最复杂的)。所有其他控件都发出自己的事件,这使得创建高度交互的 web 地图应用程序成为可能。
这是Leaflet. js 中一个控件的事件列表(虽然可以说是最复杂的)。所有其他控件都发出自己的事件,这使得创建高度交互的 web 地图应用程序成为可能。
在本章中,我们将使用地图控件的事件来演示小叶. js 中的事件处理。有关属于其他控件的事件的信息,请查看您感兴趣的控件的[小叶. js 文档](http://leafletjs.com/reference.html)
在本章中,我们将使用地图控件的事件来演示Leaflet. js 中的事件处理。有关属于其他控件的事件的信息,请查看您感兴趣的控件的[Leaflet. js 文档](http://leafletjs.com/reference.html)
为了处理事件,您需要知道:
......@@ -95,7 +97,7 @@
为了处理事件数据,您需要知道正在返回什么类型的数据,然后调整回调函数来拦截和处理它。
查看表 1,您可以看到地图的 click 事件返回一个 MouseEvent 类型的对象。MouseEvent 的小叶. js 文档提供了以下信息:
查看表 1,您可以看到地图的 click 事件返回一个 MouseEvent 类型的对象。MouseEvent 的Leaflet. js 文档提供了以下信息:
表 2: MouseEvent 属性:
......
# 五、访问外部数据源
到目前为止,我们已经看到了如何通过将数据硬编码到我们的映射应用程序中来添加数据。如果你正在构建一些不完全琐碎的东西,那么这种方法是不会削减它的。没有人想为 10,000 个不同的位置创建标记代码!我们甚至没有讨论过用户可能想要通过您的应用程序更改数据的可能性。
值得庆幸的是,有许多不同的方法可以将数据输入到您的小叶. js 应用程序中。在这一章中,我们将讨论一些您可以使用的最流行的技术。
值得庆幸的是,有许多不同的方法可以将数据输入到您的Leaflet. js 应用程序中。在这一章中,我们将讨论一些您可以使用的最流行的技术。
数据库是存储任何描述的数据的平台,所以让我们考虑如何使用空间组件来存储和检索数据,以便在网络地图中使用。
......@@ -16,7 +18,7 @@
图 39:显示 MySQL 服务运行的 XAMPP 控制面板
现在我已经有了一个正在运行的数据库服务器,我需要创建一个数据库,并用一些数据填充它,然后我可以在我的小叶. js 应用程序中使用这些数据。XAMPP 将一个名为 myPhpAdmin 的图形用户界面捆绑到 MySQL 中,但是我喜欢在命令行上工作,所以我将在这里演示这一点。
现在我已经有了一个正在运行的数据库服务器,我需要创建一个数据库,并用一些数据填充它,然后我可以在我的Leaflet. js 应用程序中使用这些数据。XAMPP 将一个名为 myPhpAdmin 的图形用户界面捆绑到 MySQL 中,但是我喜欢在命令行上工作,所以我将在这里演示这一点。
首先,我需要登录 MySQL 服务器。我可以通过 XAMPP 控制面板中的 Shell 按钮来实现这一点,或者我可以将 MySQL 二进制文件添加到我的 PATH 中,并从标准终端访问它。XAMPP 为 MySQL 配置了一个根帐户,但是没有密码,所以让我们给根用户一个**传单**的密码。
......@@ -390,7 +392,7 @@ var`visits``=``data``[``i``].``Visits``;`
然而,在我们的 MySQL 示例中,一切都与之前不太一样。在那个例子中,我们使用 JQuery 对一个 PHP 脚本进行 AJAX 调用,该脚本从数据库中的一个表的内容中返回 JSON 数据。在这个例子中,我们将使用一个 Labble . js 插件来发出 AJAX 请求并处理响应。
插件是 Labber . js 真正酷的一部分。小叶. js 框架本身很小,非常健壮,它一直保持这种状态,因为维护者只在框架中包含核心功能。然而,有一个丰富的社区开发插件的基础,以许多令人兴奋的方式扩展传单。我们将在接下来的两章中查看其他插件,但是在这个例子中,我们将使用一个名为**传单-layerJSON** 的插件,由 Stefano Cudini 创建。更多信息参见项目的 [GitHub 页面](https://github.com/stefanocudini/leaflet-layerjson)
插件是 Labber . js 真正酷的一部分。Leaflet. js 框架本身很小,非常健壮,它一直保持这种状态,因为维护者只在框架中包含核心功能。然而,有一个丰富的社区开发插件的基础,以许多令人兴奋的方式扩展传单。我们将在接下来的两章中查看其他插件,但是在这个例子中,我们将使用一个名为**传单-layerJSON** 的插件,由 Stefano Cudini 创建。更多信息参见项目的 [GitHub 页面](https://github.com/stefanocudini/leaflet-layerjson)
这个插件的伟大之处在于,它将读取来自 Flickr 照片搜索应用编程接口的 JSON 数据,并根据返回的数据自动创建标记及其相关弹出窗口。这有多酷?
......@@ -489,7 +491,7 @@ var`visits``=``data``[``i``].``Visits``;`
*图**45**:Flickr API 应用,带有看起来不可靠的弹出窗口*
嗯,这一切似乎都在工作,但我们的弹出窗口不够大,无法包含 Flickr 返回的图像。我们可以用一点简单的 CSS 来解决这个问题。我使用浏览器的开发工具来找出小叶. js API 中的哪些类负责设计弹出窗口的样式,然后在页面顶部的
嗯,这一切似乎都在工作,但我们的弹出窗口不够大,无法包含 Flickr 返回的图像。我们可以用一点简单的 CSS 来解决这个问题。我使用浏览器的开发工具来找出Leaflet. js API 中的哪些类负责设计弹出窗口的样式,然后在页面顶部的
代码清单 46:用 CSS 自动调整弹出窗口的大小
......@@ -513,7 +515,7 @@ var`visits``=``data``[``i``].``Visits``;`
图 46:最终的 Flickr 照片搜索 API 应用程序
我相信您已经开始意识到,有许多不同的方法可以将数据输入到您的小叶. js 应用程序中。但让我们再考虑一个。
我相信您已经开始意识到,有许多不同的方法可以将数据输入到您的Leaflet. js 应用程序中。但让我们再考虑一个。
KML 代表钥匙孔标记语言。全名对任何人来说都没什么意义了,但首字母缩略词确实有意义。这是一种基于 XML 的地理数据表示格式,谷歌已经在谷歌地球和谷歌地图应用程序中广泛使用,现在在其他地方也有相当多的追随者。KML 现已被公认为开放地理空间联盟的官方国际标准,该组织对我们如何存储和共享地理数据非常感兴趣。
......@@ -631,4 +633,4 @@ src`=``'js/leaflet-omnivore.min.js'`></剧本>
图 50:美国地质勘探局 KML 地震数据在活页中可视化
在本章中,我们已经看到了如何从 SQL 数据库和第三方提供者向小叶图添加数据。我们还看到了小叶插件如何极大地扩展您可以添加到地图中的数据类型,同时保持核心小叶代码库的小。`
\ No newline at end of file
在本章中,我们已经看到了如何从 SQL 数据库和第三方提供者向Leaflet图添加数据。我们还看到了Leaflet插件如何极大地扩展您可以添加到地图中的数据类型,同时保持核心Leaflet代码库的小。`
\ No newline at end of file
# 六、地理编码
通常,您希望您的用户能够输入地址、地标或国家公园等位置,并让您的地图立即缩放到正确的位置。地理信息系统的人们对此有一个术语:地理编码。如果你还没有猜到的话,Leaflet.js 有一个插件。事实上,它有几个。但是我喜欢的一个,也是我们将在这一章看到的,是地理搜索
任何地理编码操作的准确性都完全取决于可用数据的质量,我真正喜欢 L.GeoSearch 的原因之一是,它让我们能够根据几个不同提供商的数据进行地理编码:谷歌、Esri、Bing、和 OpenStreetmap。另一个原因是,无论您决定使用哪个提供程序,它都很容易实现,甚至提供了自己完全足够的用户界面控制。让我们继续使用它。
......@@ -8,7 +10,7 @@
图 51:GitHub 上的 L.GeoSearch 页面
像大多数小叶. js 插件一样,L.GeoSearch 由一些 JavaScript 文件和一些 CSS 组成,用于控制样式,因此您可以忽略 zip 文件的大部分内容。如果您想跟随这个例子,只需复制。js 文件从 zip 文件中的 src\js 文件夹移动到一个名为 js 的目录中,该目录与您将要编写代码的目录相同。在我的环境中,我正在用 Ch06 _ geocoding 编写代码,这是我的本地 web 服务器上 leafletsync 的子目录:
像大多数Leaflet. js 插件一样,L.GeoSearch 由一些 JavaScript 文件和一些 CSS 组成,用于控制样式,因此您可以忽略 zip 文件的大部分内容。如果您想跟随这个例子,只需复制。js 文件从 zip 文件中的 src\js 文件夹移动到一个名为 js 的目录中,该目录与您将要编写代码的目录相同。在我的环境中,我正在用 Ch06 _ geocoding 编写代码,这是我的本地 web 服务器上 leafletsync 的子目录:
![](img/00059.jpeg)
......
# 七、总结
所以现在你已经有机会玩了,我希望你和我一样对它的可能性感到兴奋。我可以说,毫无疑问,这是我用过的最好的网络地图应用编程接口,我已经尝试了大部分。
通过保持小叶. js 的核心小并通过插件扩展其功能,该 API 是一种愉快的工作方式,并且没有损害其一些竞争对手的努力的膨胀。事情只是按照你期望的方式运行,这在这个领域是不寻常的。许多地图应用编程接口是由地理学家创建的,他们倾向于在他们的应用编程接口中使用对普通人来说意义不大的特性和术语。传单的创造者弗拉基米尔·阿加丰金(Vladimir Agafonkin)首先是一名网络开发人员——这表明了这一点,因为他已经建立了一个其他网络开发人员可以与之相关的应用编程接口。
通过保持Leaflet. js 的核心小并通过插件扩展其功能,该 API 是一种愉快的工作方式,并且没有损害其一些竞争对手的努力的膨胀。事情只是按照你期望的方式运行,这在这个领域是不寻常的。许多地图应用编程接口是由地理学家创建的,他们倾向于在他们的应用编程接口中使用对普通人来说意义不大的特性和术语。传单的创造者弗拉基米尔·阿加丰金(Vladimir Agafonkin)首先是一名网络开发人员——这表明了这一点,因为他已经建立了一个其他网络开发人员可以与之相关的应用编程接口。
在这本书里,我们介绍了大部分的核心 API,甚至还看了一些插件。如果你想大大扩展你的网络地图应用程序的功能,那么你应该看看插件的种类。传单. js 上的官方插件页面列出了很多,几乎涵盖了你能想象到的所有功能。
......@@ -38,7 +40,7 @@
![](img/00071.jpeg)
图 62:在 GitHub 上可以找到大量的插件,以及小叶. js 代码本身
图 62:在 GitHub 上可以找到大量的插件,以及Leaflet. js 代码本身
最后,如果没有符合要求的东西,为什么不创建自己的插件,并与 Labber . js 社区共享呢?传单在 GitHub 上维护了一个非常全面的文档,名为[传单插件创作指南](https://github.com/Leaflet/Leaflet/blob/master/PLUGIN-GUIDE.md)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册