下边介绍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的更多相关文章

  1. Leaflet:Event与Layer类属性、方法

    Event 之所以要说Event,是因为很多类都是继承自Layer--Marker.Popup.Tooltip.Path以及继承自Path的Circle.Polyline.Polygon...:而La ...

  2. Leaflet:LayerGroup、FeatureGroup

    LayerGroup(Layer) Layer 用法:把一些Layer集中到一个组Group中,以便作为一个整体进行操作.如果把该Group加入到了Map中,任何从这个Group增加或者移除Layer ...

  3. Node.js:path、url、querystring模块

    Path模块 该模块提供了对文件或目录路径处理的方法,使用require('path')引用. 1.获取文件路径最后部分basename 使用basename(path[,ext])方法来获取路径的最 ...

  4. python:PATH、PYTHONPATH 和 sys.path 的区别

    python:PATH.PYTHONPATH 和 sys.path 的区别 共同点 所有在它们的路径里面的 moduel 都可以被 import PATH 在 PATH 中的一些命令,例如 *.exe ...

  5. 环境变量配置的作用和区别:Path、Classpath、JAVA_HOME

    环境变量配置的作用和区别:Path.Classpath.JAVA_HOME 一个是零时配置,另一个是永久性配置. 零时配置的方法: 打开cmd窗口——>输入set命令,回车——>输入set ...

  6. Java NIO学习系列七:Path、Files、AsynchronousFileChannel

    相对于标准Java IO中通过File来指向文件和目录,Java NIO中提供了更丰富的类来支持对文件和目录的操作,不仅仅支持更多操作,还支持诸如异步读写等特性,本文我们就来学习一些Java NIO提 ...

  7. Leaflet:LatLng、LatLngBounds、Point、Bounds、Icon

    LatLng 代表一个有着确定经纬度坐标的地理点. 1.用例 var latlng = L.latlng(50.5,30.5); 所有Leaflet的方法中接收的LatLng参数均可以用数组[ ]或者 ...

  8. 小白日记51:kali渗透测试之Web渗透-WebShell(中国菜刀、WeBaCoo、Weevely)

    webshell 本质:<?php echo shell_exec($_GET['cmd']);?> windows平台 中国菜刀官网:胖客户端程序,国产中比较优秀的webshell,适用 ...

  9. 小白日记15:kali渗透测试之弱点扫描-漏扫三招、漏洞管理、CVE、CVSS、NVD

    发现漏洞 弱点发现方法: 1.基于端口服务扫描结果版本信息,比对其是否为最新版本,若不是则去其 官网查看其补丁列表,然后去逐个尝试,但是此法弊端很大,因为各种端口应用比较多,造成耗时大. 2.搜索已公 ...

随机推荐

  1. linux设置系统用户密码

    目录 一:系统用户密码 1.设置用户密码 一:系统用户密码 1.设置用户密码 1.交互式方法 passwd [用户名] 2.免交互式 echo [设置密码] | passwd --stdin [用户名 ...

  2. netstat in Linux

    # netstat -unlt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address         ...

  3. kibana 对es的简单操作。

    一.查询和查看. #1.查询所有的数据 GET _search { "query": { "match_all":{} } } #2. 查看ES集群的健康状态 ...

  4. th 表达式的简单使用。

    一.使用场景,页面中,循环遍历,获得控制器穿过来的值. 1.1 控制器 /** * 获得所有的图书信息 * @return */ @RequestMapping("/turnIndexPag ...

  5. Lesson2——NumPy Ndarray 对象

    NumPy 教程目录 NumPy Ndarray 对象 NumPy 最重要的一个特点是其 $N$ 维数组对象 ndarray,它是一系列同类型数据的集合,以 $0$ 下标为开始进行集合中元素的索引. ...

  6. 从我做起[AutoMapper实现模块化注册自定义扩展MapTo<>()].Net Core 之二

    AutoMapper实现模块化注册自定义扩展MapTo<>() 我们都知道AutoMapper是使用的最多的实体模型映射,如果没有AutoMapper做对象映射那么我们需要想一下是怎么写的 ...

  7. 不会用SpringBoot连接Redis,那就赶紧看这篇

    摘要:如何通过springboot来集成操作Redis. 本文分享自华为云社区<SpringBoot连接Redis操作教程>,作者: 灰小猿. 今天来和大家分享一个如何通过springbo ...

  8. Nginx 配置 HTTPS 服务器

    Nginx 配置 HTTPS 服务器 Chrome 浏览器地址栏标志着 HTTPS 的绿色小锁头从心理层面上可以给用户专业安全的心理暗示,本文简单总结一下如何在 Nginx 配置 HTTPS 服务器, ...

  9. SpringBoot使用IDEA设置的外部Tomcat启动

    前言 使用springboot内嵌的tomcat启动是没问题,但是工程是要放到服务器上的tomcat的,所以springboot内嵌的能够启动,但不代表服务器的tomcat能启动起来,我就遇到了这个问 ...

  10. Java语言中的访问权限修饰符

    一个Java应用有很多类,但是有些类,并不希望被其他类使用.每个类中都有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用.如何能做到访问控制呢?就需要使用访问权限修饰符. Java语 ...