我正在创建一个与旅行相关的Phonegap应用程序(使用jQuery和Google Maps API V3),并希望向用户显示他/她自启动应用程序以来所经历的距离。
这是否有Google功能?或者任何人都可以推荐我能做些什么来获得旅行的总距离?
答案 0 :(得分:3)
可以轻松完成。您必须了解,通过使用Google Maps API for jQuery,您可以自己完成所有需要的工具。
首先,您需要定义一个时间段(比方说1分钟)。我们需要它来创建我们运动的参考点。下一步是使用phonegap / cordova地理定位API来计算我们的位置(纬度和经度):
http://docs.phonegap.com/en/1.0.0/phonegap_geolocation_geolocation.md.html
此时选择您要:
最后你需要计算距离。循环通过位置数组并使用纬度和经度来计算每个可用点之间的距离。在这里,您将找到用于此类计算的函数(使用js示例):
http://www.movable-type.co.uk/scripts/latlong.html
或者您可以使用Google Maps APi功能:
google.maps.geometry.spherical.computeDistanceBetween(latLngA,latLngB);
修改强>:
以下是适合您的工作示例:http://jsfiddle.net/Gajotres/6YpAG/
代码:
$(document).ready(function(){
// Chicago
var coordinateObject= new Object();
coordinateObject.lat = '41.83682786072714';
coordinateObject.lng = '-87.626953125';
geoLocationHandler.addLocation(coordinateObject);
// New York
var coordinateObject= new Object();
coordinateObject.lat = '40.58058466412761';
coordinateObject.lng = '-74.00390625';
geoLocationHandler.addLocation(coordinateObject);
// Toronto
var coordinateObject= new Object();
coordinateObject.lat = '43.70759350405294';
coordinateObject.lng = '-79.365234375';
geoLocationHandler.addLocation(coordinateObject);
var len = geoLocationHandler.arrLocations.length;
for (var i = 0; i < len; i++) {
if(i == 1){
geoLocationHandler.distance += geoLocationHandler.calcDistance(geoLocationHandler.arrLocations[i-1].lat,geoLocationHandler.arrLocations[i-1].lng,geoLocationHandler.arrLocations[i].lat,geoLocationHandler.arrLocations[i].lng);
}
}
alert(geoLocationHandler.distance);
});
var geoLocationHandler = {
arrLocations : [],
distance : 0,
addLocation:function(obj){
geoLocationHandler.arrLocations.push(obj);
},
calcDistance:function(fromLat, fromLng, toLat, toLng) {
return google.maps.geometry.spherical.computeDistanceBetween(new google.maps.LatLng(fromLat, fromLng), new google.maps.LatLng(toLat, toLng));
}
};
最终结果是以米为单位的距离。
每次有新的协调时,都使用它来创建一个新对象并将其添加到数组中:
var coordinateObject= new Object();
coordinateObject.lat = '41.83682786072714'; // Change with your latitude
coordinateObject.lng = '-87.626953125'; // Change with your longitude
geoLocationHandler.addLocation(coordinateObject);