Leaflet Routing Machine基于Leaflet的路径引擎
目录
Leaflet Routing Machine(以下简称LRM)试图给复杂的问题提供一个简单的解决方案:现实中,路径可以是多方面的,并且用于各种场景的用户界面也大不相同; 大多数站点都希望用自己的样式实现用户界面。LRM 通过默认值来解决这一问题:只需要几行代码就可以添加基本的路径功能。另外,在用户界面、功能、样式等方面,LRM 有很强的可扩展性,都是可定制的。
功能
- 标准的Leaflet 控件、外观和质感
- 起始点的路径,通过地址输入和使用地图拾取坐标的方式,添加点、编辑和移除经过点。
- 多语言支持
- 支持多种路由引擎:
- OSRM – 默认内置
- Mapbox Directions API – 内置为类
L.Routing.Mapbox
; see the alternative routers tutorial - GraphHopper – 通过插件的方式 lrm-graphhopper
- Mapzen Valhalla – 通过插件的方式 lrm-valhalla
- TomTom Online Routing API – 通过插件的方式 lrm-tomtom by Mathias Rohnstock
- Esri – 通过插件的方式 lrm-esri
- 对于进一步的使用,高度可定制化
- 外观(主题和皮肤)可定制
- 开源(ISC License,与 MIT License差不多类似)
- TypeScript 语言描述
开始
很简单,在Leaflet页面引用leaflet-routing-machine.css
和 leaflet-routing-machine.js
即可。
<link rel="stylesheet" type="text/css" href="leaflet.css">
<link rel="stylesheet" type="text/css" href="leaflet-routing-machine.css">
<script src="leaflet.js"></script>
<script src="leaflet-routing-machine.js"></script>
或者,还可以通过NPM进行安装:
npm install --save leaflet-routing-machine
使用以下几行代码就可以添加基本的路径控制,其中control是用路径控制类,其属性waypoints表示经过的路点。
L.Routing.control({
waypoints: [
L.latLng(57.74, 11.94),
L.latLng(57.6792, 11.949)
]
}).addTo(map);
也可以在初始化control之后,用函数setWaypoints进行设定。
//设置路点,注意路点的格式为纬度在前,经度在后 control.setWaypoints([ L.latLng( 28.142105,112.9547356), L.latLng( 28.2290135,112.923814) ]);
//或者用下面的方式
control.setWaypoints([ [28.1067387,112.8903746], [28.2493457,113.1502707], ]);
注意在基础版本中,控制模块不提供地址查找(地理编码)功能,所以你需要在这里设置路点的经纬度。后面的教程中,将会教你如何添加地址查找和地理编码的功能,或者可以直接查看API更多的细节。
Help, problems and contributing
该插件是免费且开源的,LRM的代码在GitHub上进行管理。欢迎提供反馈和帮助。
下面是一个简短的教程,展示了用LRM实现一些通用的使用场景。其他具体的细节可以参考API文档,包含了LRM完整的技术细节。
转载自:https://blog.csdn.net/meizi454089902/article/details/80625215