旅行に関連するPhonegapアプリを作成しています(jQueryとGoogle Maps API V3を使用)。アプリを起動してからユーザーが移動した距離を表示したいと思います。
このためのGoogle機能はありますか?または、総移動距離を取得するために私ができることを誰かが勧めることができますか?
旅行に関連するPhonegapアプリを作成しています(jQueryとGoogle Maps API V3を使用)。アプリを起動してからユーザーが移動した距離を表示したいと思います。
このためのGoogle機能はありますか?または、総移動距離を取得するために私ができることを誰かが勧めることができますか?
簡単にできます。jQuery用のGoogleMapsAPIを使用することで、自分でそれを行うために必要なすべてのツールがあることを理解する必要があります。
まず、期間を定義する必要があります(たとえば1分)。ムーブメントの基準点を作成するために必要になります。次のステップは、phonegap / cordova geolocation APIを使用して、位置(緯度と経度)を計算することです。
http://docs.phonegap.com/en/1.0.0/phonegap_geolocation_geolocation.md.html
この時点で、次を選択します。
最後に、距離を計算する必要があります。位置配列をループし、緯度と経度を使用して、使用可能なすべてのポイント間の距離を計算します。ここに、そのような計算に使用される関数があります(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);