Ale*_*ore 2 javascript maps jquery google-maps gmaps.js
我在我正在建设的一个小项目中使用Gmaps.js api.
基本上复制谷歌地图功能我想要获得从一个地址到另一个地址的路线和距离(可以只是输入/表格字段).我注意到这个演示,但它需要点击地图,也不显示总距离或行车时间?
有关从表单解析2个地址的最佳方法的任何意见,然后使用gmaps.js api计算路由和驱动时间?
将其分解成您需要的部分:
对于地理编码,请参阅此示例:http://hpneo.github.io/gmaps/examples/geocoding.html
GMaps.geocode({
address: $('#Start').val(),
callback: function(results, status) {
if (status == 'OK') {
var latlng1 = results[0].geometry.location;
}
}
}); //Repeat for destination / end point
Run Code Online (Sandbox Code Playgroud)
现在你有你的纬度/经度.
然后你可以采取一些方法来路由,但只是绘制它可以像这样的例子:http://hpneo.github.io/gmaps/examples/routes.html
map.drawRoute({
origin: [latlng1.lat(), latlng1.lng()],
destination: [latlng2.lat(), latlng2.lng()],
travelMode: 'driving',
strokeColor: '#131540',
strokeOpacity: 0.6,
strokeWeight: 6
});
Run Code Online (Sandbox Code Playgroud)
如果您打电话getRoutes
而不是drawRoute
您应该取回一个DirectionsResult
对象:https://developers.google.com/maps/documentation/javascript/directions#DirectionsResults.该TransitDetails
对象包含以到达时间的形式到达终点位置的旅行时间的信息.每个leg
还包含一个持续时间和距离,您可以通过它们进行循环并访问以下内容:
foreach($directions->routes[0]->legs as $leg) {
$time+=$leg.duration.value
$distance+=$leg.distance.value
}
Run Code Online (Sandbox Code Playgroud)
更新:
正在玩API - 并原谅嵌套的回调 - 但这是一个有效的例子:http://jsfiddle.net/mdares/82Dp2/
jQuery(document).ready(function () {
var map;
var latlng1;
var latlng2;
GMaps.geocode({
address: $('#Start').val(),
callback: function (results, status) {
if (status == 'OK') {
latlng1 = results[0].geometry.location;
GMaps.geocode({
address: $('#End').val(),
callback: function (results, status) {
if (status == 'OK') {
latlng2 = results[0].geometry.location;
map = new GMaps({
div: '#map',
lat: latlng1.lat(),
lng: latlng1.lng(),
zoom: 12
});
map.drawRoute({
origin: [latlng1.lat(), latlng1.lng()],
destination: [latlng2.lat(), latlng2.lng()],
travelMode: 'driving',
strokeColor: '#131540',
strokeOpacity: 0.6,
strokeWeight: 6
});
map.getRoutes({
origin: [latlng1.lat(), latlng1.lng()],
destination: [latlng2.lat(), latlng2.lng()],
callback: function (e) {
var time = 0;
var distance = 0;
for (var i=0; i<e[0].legs.length; i++) {
time += e[0].legs[i].duration.value;
distance += e[0].legs[i].distance.value;
}
alert(time + " " + distance);
}
});
}
}
});
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9739 次 |
最近记录: |