Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 旅行距离_Android_Jquery_Cordova_Google Maps Api 3 - Fatal编程技术网

Android 旅行距离

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计算我们的位置

我正在创建一个与旅行相关的Phonegap应用程序(使用jQuery和Google Maps API V3),并希望向用户显示他/她自启动该应用程序以来的旅行距离


有谷歌的功能吗?或者有人能推荐我能做些什么来获得总行驶距离吗?

这很容易做到。您必须了解,通过使用用于jQuery的GoogleMapsAPI,您拥有自己完成这项工作所需的所有工具

首先,您需要定义一个时间段(比如说1分钟)。我们需要它来为我们的行动创造一个参考点。下一步是使用phonegap/cordova地理定位API计算我们的位置(纬度和经度):

此时,选择是否要:

  • 在某些js数组中每隔1分钟存储一个位置(纬度和经度)
  • 或者像第1点一样做同样的事情,并用gmap添加标记功能在地图上显示它 最后,您需要计算距离。在位置数组中循环,并使用纬度和经度计算每个可用点之间的距离。在这里,您可以找到用于此类计算的函数(以js为例):

    或者您可以使用谷歌地图APi函数:

    google.maps.geometry.spherical.ComputedIstanceBeween(latLngA,latLngB)

    编辑

    下面是一个工作示例:

    代码:


    我已经每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);