여행과 관련하여 Phonegap 앱 (jQuery 및 Google Maps API V3 사용)을 만들고 있으며 앱 시작 이후 여행 한 거리를 사용자에게 보여주고 싶습니다.이동 거리
Google 기능이 있나요? 아니면 누구든지 내가 총 거리를 여행하기 위해 할 수있는 것을 권할 수 있습니까?
여행과 관련하여 Phonegap 앱 (jQuery 및 Google Maps API V3 사용)을 만들고 있으며 앱 시작 이후 여행 한 거리를 사용자에게 보여주고 싶습니다.이동 거리
Google 기능이 있나요? 아니면 누구든지 내가 총 거리를 여행하기 위해 할 수있는 것을 권할 수 있습니까?
쉽게 할 수 있습니다. Google지도 API를 jQuery 용으로 사용하면 혼자서 할 수있는 모든 도구가 있다는 것을 이해해야합니다.
먼저 기간을 정의해야합니다 (1 분이라고 말함). 우리는 움직임의 기준점을 만들기 위해 그것을 필요로 할 것입니다.
http://docs.phonegap.com/en/1.0.0/phonegap_geolocation_geolocation.md.html
: 다음 단계는 우리의 위치 (위도와 경도)를 계산하는 폰갭/코르도바 위치 정보 API를 사용하는 것입니다 및 경도) 일부 js 배열에서 1 분마다
마지막으로 거리를 계산해야합니다. 위치 배열을 반복하고 위도와 경도를 사용하여 사용 가능한 모든 점 사이의 거리를 계산합니다. 여기의 (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);
합니다. 따라서 lon/lat 값을 얻는 것은 문제가되지 않습니다. 그러나 내가 알지 못하는 것은 배열을 만들고 루핑을 수행하는 방법입니다. 자바 스크립트에는 익숙하지 않습니다. 나는 운전자가 출발 할 때 아이디어를 얻었고 출발점을 표시하는 마커를 설정하고 운전자의 위치를 표시하고 Google의 폴리 라인을 사용하여 여행 한 경로를 설정하는 마커를 만들었습니다. 그러나 나는 후자를 할 수 없었고 그 아이디어를 버려야했다. – user1809790
Google에서 이러한 기능을 제공하는 경우 해당 기능을 사용하여 거리를 계산합니다.그러나 이러한 제한을 초과하면 응용 프로그램에서 문제를 일으킬 수있는 쿼리 제한이 있는지 여부를 잘 모르겠습니다. – user1809790
API에는 이러한 기능이 없지만 메서드를 작성할 수 있도록하겠습니다. – Gajotres