2012-12-22 5 views
1

여행과 관련하여 Phonegap 앱 (jQuery 및 Google Maps API V3 사용)을 만들고 있으며 앱 시작 이후 여행 한 거리를 사용자에게 보여주고 싶습니다.이동 거리

Google 기능이 있나요? 아니면 누구든지 내가 총 거리를 여행하기 위해 할 수있는 것을 권할 수 있습니까?

답변

3

쉽게 할 수 있습니다. Google지도 API를 jQuery 용으로 사용하면 혼자서 할 수있는 모든 도구가 있다는 것을 이해해야합니다.

먼저 기간을 정의해야합니다 (1 분이라고 말함). 우리는 움직임의 기준점을 만들기 위해 그것을 필요로 할 것입니다.

  1. 저장 위치 (위도 : 당신이에 원하는 할 선택이 시점에서

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

    : 다음 단계는 우리의 위치 (위도와 경도)를 계산하는 폰갭/코르도바 위치 정보 API를 사용하는 것입니다 및 경도) 일부 js 배열에서 1 분마다

  2. 또는 1과 같은 일을하고 gmap addMarker 기능으로지도에 표시하십시오.

마지막으로 거리를 계산해야합니다. 위치 배열을 반복하고 위도와 경도를 사용하여 사용 가능한 모든 점 사이의 거리를 계산합니다. 여기의 (a JS 예제)는 같은 계산에 사용되는 함수를 찾을 수 있습니다 :

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

또는 Google지도 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)); 
    } 
}; 

최종 결과는 미터로 표현되는 거리입니다.

이 새로운 객체를 생성하고 배열에 추가 할 수있는 새로운 조정 사용할 수 있습니다 때마다 : 이미 위치를 1 분마다 점점 및 Google지도에 마커를 업데이트하고

var coordinateObject= new Object(); 
coordinateObject.lat = '41.83682786072714'; // Change with your latitude 
coordinateObject.lng = '-87.626953125'; // Change with your longitude 
geoLocationHandler.addLocation(coordinateObject); 
+0

합니다. 따라서 lon/lat 값을 얻는 것은 문제가되지 않습니다. 그러나 내가 알지 못하는 것은 배열을 만들고 루핑을 수행하는 방법입니다. 자바 스크립트에는 익숙하지 않습니다. 나는 운전자가 출발 할 때 아이디어를 얻었고 출발점을 표시하는 마커를 설정하고 운전자의 위치를 ​​표시하고 Google의 폴리 라인을 사용하여 여행 한 경로를 설정하는 마커를 만들었습니다. 그러나 나는 후자를 할 수 없었고 그 아이디어를 버려야했다. – user1809790

+0

Google에서 이러한 기능을 제공하는 경우 해당 기능을 사용하여 거리를 계산합니다.그러나 이러한 제한을 초과하면 응용 프로그램에서 문제를 일으킬 수있는 쿼리 제한이 있는지 여부를 잘 모르겠습니다. – user1809790

+0

API에는 이러한 기능이 없지만 메서드를 작성할 수 있도록하겠습니다. – Gajotres