自入门--leaflet学习笔记

最近开始入门leaflet,这里是简单的知识点整理及QuickStart,望dalao们批评指正!

leaflet的快速开始向导:

这篇循序渐进的引入文将快速的让你开始学习leaflet的基础内容,包含了创建一个使用标记,气泡点,多段线的用来处理事件的leaflet地图.

http://leafletjs.com/examples/quick-start/example.html

为你的页面做准备:

 在你开始你的地图代码之前,你为页面需要做好以下几步准备:

  --引入在文档头部leaflet的css文件:

<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin=""/>

  --紧接着引入leaflet的JS文件:

<!-- Make sure you put this AFTER Leaflet‘s CSS -->

<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script>

  --在你希望引入地图的位置处键入一个有id的div:

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

  --请确定你需要的div有明确的高度,例如将样式写在css里:

#mapid { height: 180px; }

创建地图:

http://leafletjs.com/examples/quick-start/example-basic.html

  让我们使用Pretty Mapbox Streets来创建一个以伦敦为中心的地图,首先,我们创建地图并设置它的视图到我们选择的地理坐标上,设置好缩放等级.

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

  默认情况下(创建地图实例时我们没有传递任何选项),所有的鼠标及触控交互操作都是可用的,并且包含缩放和属性控制.

  注意到调用setView方法也会返回地图对象--大多数leaflet方法运行时也一样(不返回一个明确的值时),这使得类似jQuery的方法链十分方便.

  接下来我们添加一个基本图块到我们的地图上,这样的话它就是一个Mapbox Street的基本图层了,创建一个基本图层通常包含为图层图像设置URL模板,属性文本以及图层的最大缩放等级.在这个例子中我们将使用Mapbox`s"Classic maps"中的mapbox.sreets图层(为了从Mapbox中使用图层,你必须申请一个接入许可).

L.tileLayer(‘https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}‘, { attribution: ‘Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery ? <a href="http://mapbox.com">Mapbox</a>‘, maxZoom: 18, id: ‘mapbox.streets‘, accessToken: ‘your.mapbox.access.token‘ }).addTo(mymap);

  确保所有的代码都在这个div和leaflet.js内容之后被调用.就是这样!你现在拥有一个正在运作的leaflet地图了.

  值得注意的是leaflet是不区分提供方的,这就意味着它不强制选择图层的提供方.你可以试着用mapbox.satellite替换mapbox.streets,看看会发生什么.同理,leaflet甚至不包含任何一行特定提供商的代码,所以如果你需要的话,你可以任意的使用其他提供商(的代码)[我们仍建议你是用Mapbox,它很美观]

标记,区域圆以及区域多边形:

  http://leafletjs.com/examples/quick-start/example-overlays.html

  除了基础图层,你可以轻易的在地图上添加其他东西,包括标记,多段线,区域多边形,区域圆和气泡点.让我们来增加一个标记:

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

  同理增加一个圆(除了圆需要第二个参数:半径),但是在你创建对象时,你可以通过传递最后一个参数来确定它的样式.

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

  添加区域多边形也同样简单:

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

着手气泡点:

http://leafletjs.com/examples/quick-start/example-popups.html

  气泡点通常使用在当你想要在地图上某些特定对象上附加一些信息时.为此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.5, -0.09]) .setContent("I am a standalone popup.") .openOn(mymap);

  这里我们使用openOn而不是addTo是因为当开启一个新的气泡点时将自动关闭上一个打开的气泡点,这样提高了使用性.

处理事件:

  在leaflet中时刻都在发生着事件,举个例子,用户点击了一个标记或地图缩放,相应的对象传送一个可以描述的事件的方法.这是你能就用户的交互做出反应:

function onMapClick(e) { alert("You clicked the map at " + e.latlng); } mymap.on(‘click‘, onMapClick);

  每一个对象都有它独有的一系列事件--详见文档,监听方法的第一个参数是一个事件对象--它包含着已发生事件的实用信息.例如,地图点击事件对象(例子中的e)有一个latlng属性表示点击发生的位置.

  让我们使用气泡点代替警示框来改进我们的例子:

var popup = L.popup(); function onMapClick(e) { popup .setLatLng(e.latlng) .setContent("You clicked the map at " + e.latlng.toString()) .openOn(mymap); } mymap.on(‘click‘, onMapClick);

  试着点击地图然后你会发现气泡点的坐标.浏览整个例子

  现在你已经学习了leaflet的基础并且你可以立刻开始搭建地图app!不要忘了查看下文档其他实例

@2017  Vladimir Agafonkin.Maps ? OpenStreetMap contributors.

                                                                                                                                                                                                                                    2018.3.11

                                                                                                            翻译自k2etrookie

原文地址:https://www.cnblogs.com/k2etrookie/p/8544824.html

时间: 2024-10-18 04:41:36

自入门--leaflet学习笔记的相关文章

Webpack新手入门教程(学习笔记)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 30.0px Helvetica; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "PingFang TC Semibold"; color: #000000 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0

&lt;LINUX &gt;bash shell 入门 --linux学习笔记

首先说下我个人对于shell的理解,我觉得shell是一种通过各种控制语句将linux命令进行集合实现批处理的一种脚本语言. shell编程入门其实很简单,语法知识并不多,但是高级shell编程就很难,因为shell是用户和linux之间的桥梁,要编写高质量的shell脚本,就需要用户对linux有很全面的认识. 这里我们只分析shell脚本的语法知识,如想透彻的学习linux还需多努力. shell结构       1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建she

由LCS到编辑距离—动态规划入门—算法学习笔记

一切计算机问题,解决方法可以归结为两类:分治和封装.分治是减层,封装是加层. 动态规划问题同样可以用这种思路,分治. 它可以划分为多个子问题解决,那这样是不是用简单的递归就完成了?也许是的,但是这样会涉及太多的不便的操作.因为子问题有重叠! 针对这种子问题有重叠的情况的解决,就是提高效率的关键. 所以动态规划问题可以总结为:最优子结构和重叠子问题. 解决这个子问题的方式的关键就是:memoization,备忘录. 动态规划算法分以下4个步骤: 描述最优解的结构 递归定义最优解的值 按自底向上的方

《NOSQL数据库入门》学习笔记

<nosql数据库入门> 第1章 nosql数据库的基础知识 1 1.1 关系型数据库和nosql数据库 2 1.1.1 什么是nosql 2 1.1.2 关系型数据库简史 2 1.1.3 数据库的分类 3 1.1.4 关系型数据库的优势 5 1.1.5 关系型数据库的不足 5 1.1.6 nosql数据库 9 1.2 nosql数据库是什么 12 1.2.1 键值存储 13 1.2.2 面向文档的数据库 14 1.2.3 面向列的数据库 14 1.3 如何导入nosql数据库 16 1.3.

《OpenCV3编程入门》学习笔记三:HighGUI图形用户界面

一:内容介绍 本节主要介绍OpenCV的HighGUI模块,并分享几个例子: 1. 用imwrite函数生成png透明图 2. 综合示例程序:图像的载入.显示与输出 3. 为程序界面添加滑动条 4. 鼠标操作 二:学习笔记 1. 使用OpenCV首先要学会使用它的图形界面,此章节介绍了OpenCV的一些HighGUI使用方法,并不涉及什么理论部分.关于HighGUI大家可参考官网HighGUI模块 http://docs.opencv.org/3.1.0/d7/dfc/group__highgu

30分钟入门正则表达式 学习笔记

原文 有一个问题,在此记录: 在负向零宽断言里面,匹配q后面不是u的单词. 使用 \b\w*q(?!u)\w*\b 不能解决 qsqu这种情况. 即qs已经消耗了负向零宽断言,但是仍然存在qu的这种情况. 学习笔记: \b #元字符 只匹配一个位置 \bhi\b #精确查找hi这个单词 \bhi\b.*\bLucy\b #hi后面不远处跟着一个Lucy 0\d{2}-\d{8} #匹配012-12345678电话号码 元字符 表1.常用的元字符 代码 说明 . 匹配除换行符以外的任意字符 \w

Android入门开发学习笔记

遇到的未解决的问题 问题:第一次运行时出现了[INSTALL_FAILED_OLDER_SDK]的报错,原因不清楚 临时解决方案:注释掉了AndroidManifest.xml 文件中的<!--uses-sdk android:minSdkVersion="20"/-->这一行 学习笔记 Android的图形用户界面是由多个View和ViewGroup构建出来的.View是通用的UI窗体小组件,比如按钮(Button)或者文本框(text field),而ViewGroup

spring入门篇-学习笔记

1.spring IOC的作用就是用加载配置文件的方式代替在代码中new 对象的方式来实例化对象. 2.IOC 全称:Inversion  of Control,中文意思:控制反转 3.依赖注入有两种方式: 设值注入-> 通过添加set方法,并在配置文件的bean中添加property标签(property引用另一个bean)的方式注入 构造注入->通过构造方法,并在配置文件的bean中添加constructor-arg标签的方式注入 例子项目结构: 以下是各文件代码: InjectDao.j

PHPWeb开发入门体验学习笔记

一.PHP应用程序开发须知 1.入门要点 程序员三个阶段:码农(速成技能)->工程师(长期知识)->专家(研究论文) 编程三要素:声明变量(系统.全局.字段等).数据算法(应用.比较.计算等) .控制结构(变更.判断.循环等) 类三要素:封装.继承.多态 PHPweb应用程序开发分两端:前台Html+Css+JavaScript静态页面或UI美工平面设计,后台PHP+MySQL动态网页设计或交互式数据处理 php知识要点:函数.数组.面向对象 php运行开发环境:lwamp集成运行环境Linu