Android 旅行距离
我正在创建一个与旅行相关的Phonegap应用程序(使用jQuery和Google Maps API V3),并希望向用户显示他/她自启动该应用程序以来的旅行距离Android 旅行距离,android,jquery,cordova,google-maps-api-3,Android,Jquery,Cordova,Google Maps Api 3,我正在创建一个与旅行相关的Phonegap应用程序(使用jQuery和Google Maps API V3),并希望向用户显示他/她自启动该应用程序以来的旅行距离 有谷歌的功能吗?或者有人能推荐我能做些什么来获得总行驶距离吗?这很容易做到。您必须了解,通过使用用于jQuery的GoogleMapsAPI,您拥有自己完成这项工作所需的所有工具 首先,您需要定义一个时间段(比如说1分钟)。我们需要它来为我们的行动创造一个参考点。下一步是使用phonegap/cordova地理定位API计算我们的位置
有谷歌的功能吗?或者有人能推荐我能做些什么来获得总行驶距离吗?这很容易做到。您必须了解,通过使用用于jQuery的GoogleMapsAPI,您拥有自己完成这项工作所需的所有工具 首先,您需要定义一个时间段(比如说1分钟)。我们需要它来为我们的行动创造一个参考点。下一步是使用phonegap/cordova地理定位API计算我们的位置(纬度和经度): 此时,选择是否要:
我已经每1分钟得到一个位置,并在谷歌地图上更新一个标记。因此,获取lon/lat值不是问题。但是,我不知道如何创建数组和执行循环-我对javascript不熟悉。我还想到,当司机离开时,我会设置一个标记来指示起点,设置一个标记来显示司机的位置,并使用谷歌的多段线设置行驶的路径。然而,我没有做到后者,不得不放弃这个想法。如果谷歌提供这样一个功能,我会使用他们的功能来计算距离。但是,我不确定他们是否有任何查询限制,如果超过该限制,会导致应用程序出现问题。Dapi没有此类功能,但让我给您写一个方法。
$(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);