如何将字符串地址传递到传单路由机,以根据字符串地址获得方向
How to pass string address to leaflet routing machine to get direction based on string address?
好吧,我正在使用传单api,然后我发现了一个非常好的支持插件,称为传单路由机,用于显示从a到B的地址,路由很好。
然而,传单路由机在传递latlng时工作良好,但在传递地址时不工作,所以有人能告诉我它是如何工作的吗?我知道以下链接上的房产信息:所以航路点有一个叫做name的属性,但没有;我不知道如何使用它来提供地址a和地址B
这是一个显示新西兰奥克兰市的代码。。。。并试图传递地址,但不起作用
< script >
var mymap = L.map('mapid', {
center: [-36.85625, 174.76141],
zoom: 13
});
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.yourkey', {
attribution: 'Log Sample',
id: 'mapbox.streets'
}).addTo(mymap);
//L.Control.geocoder().addTo(mymap);
L.Routing.control({
waypoints: [
//L.latLng(-36.87178, 174.753),
//L.latLng(-36.84514, 174.76493)
L.name("12 Morning Star place, Auckland"),
L.name("198 Dominion road, Mount Roskill, Auckland")
],
routeWhileDragging: false
}).addTo(mymap); < /script>
L.Routing.Waypoint
对象传递给waypoints
。
所以,你的代码看起来像:
....
var geocoder = L.Control.Geocoder.nominatim()
L.Routing.control({
geocoder: geocoder,
waypoints: [
//L.latLng(-36.87178, 174.753),
//L.latLng(-36.84514, 174.76493)
L.Routing.waypoint(null,"12 Morning Star place, Auckland"),
L.Routing.waypoint(null,"198 Dominion road, Mount Roskill, Auckland")
],
routeWhileDragging: false,
}).addTo(mymap);
但这并没有对其进行地理编码。相反,它只是填充路点文本框。您仍然需要在每个框上点击enter(或通过js触发它)才能运行geocoder。
另一种选择是手动从地理编码器获取数据,并在设置航路点之前创建L.Routing.Waypoint
或L.LatLng
对象
geocoder.geocode('Montreal', function(a, b) {
// depending on geocoder results may be either in a or b
console.log(a);
// choose the best result here. probably the first one in array
// create waypoint object
var wpt = L.Routing.waypoint(L.latLng(lat, lng), name)
waypoints.push(wpt);
})
...
// setting waypoints
routingControl.setWaypoints(waypoints);
更新以涵盖评论中的问题
可以通过L.Routing.Plan
添加带有弹出窗口的自定义标记。您的L.Routing.control
对象可以这样初始化:
var geocoder = L.Control.Geocoder.nominatim(),
waypoints = [], // can be populated later
routeControl = L.Routing.control({
plan: L.Routing.plan(waypoints, {
createMarker: function(i, wp) {
return L.marker(wp.latLng, {
draggable: true
}).bindPopup("Some data for popup");
},
geocoder: geocoder,
routeWhileDragging: false,
})
}).addTo(map);
相关文章:
- 如何将字符串地址传递到传单路由机,以根据字符串地址获得方向
- 谷歌地图自动完成删除空格并在地址字符串中插入加号(+)
- 检查地址栏中的字符串是否与 li ID 匹配
- jquery ajax 返回地址栏中的查询字符串
- 正则表达式以匹配地址中的任何字符串组
- 如何从描述地址的字符串访问对象子项
- Angular i18n 字符串中的电子邮件地址
- 将字符串中的 url 替换为 href 链接 - 适用于多种地址类型
- 如何在javascript中从字符串变量中提取ip地址
- 用javascript将单独的地址字符串序列化为一个
- 将整数MAC地址转换为Javascript中的字符串
- regex从地址字符串中提取英国邮编的一部分
- Regex将电子邮件地址从字符串包装为mailto
- 找出字符串是街道地址、套房号码、购物中心还是其他东西
- Regex -匹配电子邮件地址中的字符串
- 立即用字符串地址加载gmap,而不是用latlng
- 将纬度、经度转换为地址字符串
- 生成带有地址字符串的谷歌地图
- 创建有效的电子邮件地址字符串(仅剩下@sign需要)
- 使用jquery从地址字符串中提取数字和单词