1

旅行に関連するPhonegapアプリを作成しています(jQueryとGoogle Maps API V3を使用)。アプリを起動してからユーザーが移動した距離を表示したいと思います。

このためのGoogle機能はありますか?または、総移動距離を取得するために私ができることを誰かが勧めることができますか?

4

1 に答える 1

3

簡単にできます。jQuery用のGoogleMapsAPIを使用することで、自分でそれを行うために必要なすべてのツールがあることを理解する必要があります。

まず、期間を定義する必要があります(たとえば1分)。ムーブメントの基準点を作成するために必要になります。次のステップは、phonegap / cordova geolocation APIを使用して、位置(緯度と経度)を計算することです。

http://docs.phonegap.com/en/1.0.0/phonegap_geolocation_geolocation.md.html

この時点で、次を選択します。

  1. いくつかのjs配列に1分ごとに位置(緯度と経度)を保存します
  2. または、ポイント1と同じことを行い、gmapaddMarker機能を使用してマップに表示します。

最後に、距離を計算する必要があります。位置配列をループし、緯度と経度を使用して、使用可能なすべてのポイント間の距離を計算します。ここに、そのような計算に使用される関数があります(jsの例を使用)。

http://www.movable-type.co.uk/scripts/latlong.html

または、GoogleMapsAPi関数を使用できます。

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);
于 2012-12-22T10:22:56.970 に答える