Leaflet:Path、Polyline、Polygon、Rectangle、Circle、CircleMarker
下边介绍Vector Layer
Path(Layer)
Path是其他Vector Layer的父类,比如Polyline、Polygon、Rectangle、Circle、CircleMarker...,虽然我们不直接用Path类,但是它的属性和方法我们需要了解。
1、参数
stroke //是否画边界,默认True,在画Circle和Polygon时很有用
color //Stroke的color
weight //Stroke的线宽
opacity //Stroke透明度
dashArray //画图过程中虚线的样式
fill //是否填充内部,常用于Circle、Polygon
fillColor //颜色
fillOpacity//透明度
bubblingMouseEvents //默认true,当为true时,发生在该Path上的鼠标事件也将触发在Map上的相同事件
2、方法
setStyle(<Path options>style) //重设一些参数来让该Path表现为一些新样式
bringToFront() //把该Path Layer放在所有Path Layer之上
bringToBack() //把该Path Layer放在所有Path Layer之下
Polyline(Path)(Layer)
地图上的折线
1、用例
①从一组LatLng中创建一个折线
//从一组LatLng(所有LatLng对象都可以用数组[x,y]代替)中得到一条折线对象
var latlngs=[
[45,-122],
[37,-122],
[34,-118]
]; var polyline = L.polyline(latlngs,{color:'red'}).addTo(map); //缩放地图视角到该Polyline上
map.fitBounds(polyline.getBounds());
②从一组多维数组创建多条折线,一个多维数组代表一条折线,这多条折线实际上是一个polyline对象
var latlngs = [
[[45.51, -122.68],
[37.77, -122.43],
[34.04, -118.2]],
[[40.78, -73.91],
[41.83, -87.62],
[32.76, -96.72]]
];
var polyline=L.polyline(latlngs,{color:'red'}).addTo(leafletMap);
leafletMap.fitBounds(polyline.getBounds());

这个Array包含两个多维数组,绘制出来就是两条折线,每个多维数组对应一条折线。与用例①不同的是这两条折线的总体表示polyline。
2、实例化
L.polyline(<LatLng[]>latlngs,<Polyline options>options?)
3、参数
smoothFactor //光滑程度 默认1
noClip //禁用polyline clipping,默认false;暂未知功能如何
4、方法
getLatLngs() //返回LatLng[],一组点的数组,如果是多条折线则返回一个嵌套数组
setLatLngs(<LatLng[]>latlngs) //用给定的点替代原来的点绘制新线
closestLayerPoint(<Point>p) //返回Polyline中离点p最近的点
getCenter() //返回Polyline的中心坐标
getBounds()//返回该Polyline所在的Bound,配合Map的fitBounds方法可以定位到该Polyline
addLatLng(<LatLng>latlng,<LatLng[]>latlng?)//向Polyline中加入一个点
Polygon(Polyline)
多边形
通过一系列Points创建多边形,并不需要额外写一个和开始点相同的最终点。
1、用例
①创建一个红色的多边形
var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];
var polygon = L.polygon(latlngs , {color:'red'}).addTo(map);
map.fitBounds(polygon.getBounds())

②环形——两个Polygon之间的环形区域
需要两个Point数组,第一个表示外Polygon,第二个表示内Polygon
写法是:
var latlngs= [
[外Polygon 的Points Array],
[内Polygon 的Points Array]
];
var latlngs = [
[[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring
[[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole
];

③多多边形——MultiPolygon
和多折线一样,如果用多维数组表示,那么显示出来的是多个多边形,但是这多个多边形的整体是一个Polygon
写法:
var latlngs =[ [第一个多边形], [第二个多边形] ];
var latlngs = [
[ // first polygon
[[37, -109.05], [41, -109.03], [41, -102.05], [37, -102.04]], // outer ring
[[37.29, -108.58], [40.71, -108.58], [40.71, -102.50], [37.29, -102.50]] // hole
],
[ // second polygon
[[41, -111.03], [45, -111.04], [45, -104.05], [41, -104.05]]
]
];

2、初始化
L.polygon(<LatLng[]>latlngs, <Polyline options>options?)
3、参数
没有特有参数,参数继承自Polyline、Path、Layer
4、方法
没有特有方法,继承自Polyline、Path、Layer
Rectangle(Polygon)
1、用例
//定义一个Bounds 左上角和右下角的坐标
var bounds=[[54.559322, -5.767822], [56.1210604, -3.021240]]
//创建Rectangle
L.rectangle(bounds,{color:'#ff7800',weight:1}).addTo(map);
//将Map缩放到该Rectangle处
map.fitBounds(bounds);
2、初始化
L.rectangle(<LatLngBounds> latlngBounds, options?)
3、参数
同Polygon
4、方法
setBounds(<LatLngBounds>latlngBounds) //在设置的Bounds处重画该Rectangle
其他方法继承自Polygon
Circle(CircleMarker)
1、用例
L.circle([50.5,30.5],{radius:200}).addTo(map)
2、初始化
L.circle(<LatLng>latlng ,<Circle options>options) //可选参数options中必须要有参数radius,即半径
3、参数
radius //圆半径,单位m
其他参数继承自Path
4、方法
setRadius(n) //重设半径
getRadius() //返回半径
getBounds() //返回LatLngBounds
setRadius、setStyle、setLatLng对于Circle的修改结果会立刻显示在Map上而不需要redraw()。
其他方法继承自CircleMarker、Path、Layer
CircleMarker(Path)
一个始终与整个Map保持相对尺寸(以pixel为空单位)的Circle,区别于Circle就是Circle是绝对尺寸(以m为单位),当你放大地图时Circle会变小,因为它与地图的相对尺寸变小了;而CircleMarker不论你怎么缩放地图,它在地图都始终是那么大:
下图分别是同一个CircleMarker,但是地图的缩放等级是不同的。


1、初始化
L.circleMarker(<LatLng>latlng ,<CircleMarker options>options?)
2、参数
radius //半径,单位像素
3、方法
setLatLng(<LatLng>latlng) //布置该CircleMarker到新位置上
getLatLng()
setRadius(n)
getRadius()
还有继承自Path、Layer的方法
Leaflet:Path、Polyline、Polygon、Rectangle、Circle、CircleMarker的更多相关文章
- Leaflet:Event与Layer类属性、方法
Event 之所以要说Event,是因为很多类都是继承自Layer--Marker.Popup.Tooltip.Path以及继承自Path的Circle.Polyline.Polygon...:而La ...
- Leaflet:LayerGroup、FeatureGroup
LayerGroup(Layer) Layer 用法:把一些Layer集中到一个组Group中,以便作为一个整体进行操作.如果把该Group加入到了Map中,任何从这个Group增加或者移除Layer ...
- Node.js:path、url、querystring模块
Path模块 该模块提供了对文件或目录路径处理的方法,使用require('path')引用. 1.获取文件路径最后部分basename 使用basename(path[,ext])方法来获取路径的最 ...
- python:PATH、PYTHONPATH 和 sys.path 的区别
python:PATH.PYTHONPATH 和 sys.path 的区别 共同点 所有在它们的路径里面的 moduel 都可以被 import PATH 在 PATH 中的一些命令,例如 *.exe ...
- 环境变量配置的作用和区别:Path、Classpath、JAVA_HOME
环境变量配置的作用和区别:Path.Classpath.JAVA_HOME 一个是零时配置,另一个是永久性配置. 零时配置的方法: 打开cmd窗口——>输入set命令,回车——>输入set ...
- Java NIO学习系列七:Path、Files、AsynchronousFileChannel
相对于标准Java IO中通过File来指向文件和目录,Java NIO中提供了更丰富的类来支持对文件和目录的操作,不仅仅支持更多操作,还支持诸如异步读写等特性,本文我们就来学习一些Java NIO提 ...
- Leaflet:LatLng、LatLngBounds、Point、Bounds、Icon
LatLng 代表一个有着确定经纬度坐标的地理点. 1.用例 var latlng = L.latlng(50.5,30.5); 所有Leaflet的方法中接收的LatLng参数均可以用数组[ ]或者 ...
- 小白日记51:kali渗透测试之Web渗透-WebShell(中国菜刀、WeBaCoo、Weevely)
webshell 本质:<?php echo shell_exec($_GET['cmd']);?> windows平台 中国菜刀官网:胖客户端程序,国产中比较优秀的webshell,适用 ...
- 小白日记15:kali渗透测试之弱点扫描-漏扫三招、漏洞管理、CVE、CVSS、NVD
发现漏洞 弱点发现方法: 1.基于端口服务扫描结果版本信息,比对其是否为最新版本,若不是则去其 官网查看其补丁列表,然后去逐个尝试,但是此法弊端很大,因为各种端口应用比较多,造成耗时大. 2.搜索已公 ...
随机推荐
- python函数位置实参传参
#!/usr/bin/python #coding=utf-8 #好好学习,天天向上 def describe_pet(type,name): print(f"i have a {type} ...
- Reset the default deployment target in Windows Phone Developer Tools
楼主在更新Windows Phone 8.1 SDK之后遇到一个很烦人的问题,编译选择调试目标列表没有数据.正常情况下都会有一个模拟器列表和真机的选项.肯定又是Preview的bug,问题产生的原因暂 ...
- Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)
平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...
- python开发: linux进程打开的文件数
1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 4 ''' 统计linux打开的文件数 ''' 5 6 import os 7 import sys ...
- 使用df -h命令查看磁盘空间使用率不算高,还有很多空余空间,但是创建文件或写入数据时一直报错磁盘写满
关于磁盘空间中索引节点爆满的问题还是挺多的,借此跟大家分享一下: 一.发现问题 在公司一台配置较低的Linux服务器(内存.硬盘比较小)的/data分区内创建文件时,系统提示磁盘空间不足,用df -h ...
- Html 项目使用自定义字体文件问题
感谢大佬:https://zhidao.baidu.com/question/652711582735059245.html 1.首先在项目过程中新建文件夹fonts将准备好的ttf字体文件复制该文件 ...
- P3400【仓鼠窝 】
思路清奇,代码简洁的好题 问题大体分两部: 记录子矩阵个数,统计每一个点作为右下角时可以得到多少矩形,加起来就是答案 剪掉墙挡住的地方 考虑从右下角开始,如果有0已经挡住了矩阵,那么更靠左.上的0都卵 ...
- Solution -「AGC 013E」「AT 2371」Placing Squares
\(\mathcal{Description}\) Link. 给定一个长度为 \(n\) 的木板,木板上有 \(m\) 个标记点,第 \(i\) 个标记点距离木板左端点的距离为 \(x_i\ ...
- Spring 高级特性之二:Processor——Bean生命周期关键触发时机
任何对象都有生命周期,那么Spring Bean对象创建.管理.销毁的整个生命周期个关键触发时机如何体现呢?先说结论,后续案例验证结论. 根据上图可知,实际bean对象涉及生命周期的主要是一个构造器和 ...
- sql server通过T-SQL导出Excel到磁盘
ALTER PROCEDURE [dbo].[pro_ImportExcelByTime] AS BEGIN --第一步,开启高级功能 EXEC sp_configure 'show advanced ...