2014-11-16 5 views
0

저는 현재 대학 프로젝트 중 하나에 간단한 웹 앱 프로토 타입을 코딩하려고합니다. Javascript를 처음 접했을 때 약간의 문제가 있습니다.computeDistanceBetween을 사용하여 사용자의 현재 위치와 고정 위치 사이의 거리를 계산합니다.

사용자의 현재 위치에 마커를 떨어 뜨린지도와 고정 된 지점에 마커를 작성했습니다. 여기에 지금까지 자바 스크립트입니다 : 여기

var map; 
 

 
function load() { 
 
    var myOptions = { 
 
     zoom: 14, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }; 
 
    map = new google.maps.Map(document.getElementById("map"), myOptions); 
 
    navigator.geolocation.getCurrentPosition(displayOnMap); 
 
} 
 

 
var pin; 
 

 
function displayOnMap(position) { 
 
    var latitude = position.coords.latitude; 
 
    var longitude = position.coords.longitude; 
 
    var initialLocation = new google.maps.LatLng(latitude, longitude); 
 
    map.setCenter(initialLocation); 
 
    var marker = new google.maps.Marker({ 
 
     map: map, 
 
     position: initialLocation, 
 
    }); 
 
    loadMarkers(); 
 
} 
 

 
function loadMarkers() { 
 
    var xmlMarkersRequest = new XMLHttpRequest(); 
 
    xmlMarkersRequest.onreadystatechange = function() { 
 
     if (xmlMarkersRequest.readyState === 4) { 
 
      var xml = xmlMarkersRequest.responseXML; 
 
      var markersArray = xml.documentElement.getElementsByTagName("marker"); 
 
      for (var i = 0; i < markersArray.length; i++) { 
 
       var id = Number(markersArray[i].getAttribute("id")); 
 
       var latitude = markersArray[i].getAttribute("latitude"); 
 
       var longitude = markersArray[i].getAttribute("longitude"); 
 
       var point = new google.maps.LatLng(
 
        parseFloat(latitude), 
 
        parseFloat(longitude)); 
 
       var marker2 = new google.maps.Marker({ 
 
        map: map, 
 
        position: point, 
 
        zIndex: id 
 
       }); 
 
      } 
 
     } 
 
    } 
 
    xmlMarkersRequest.open('GET', 'markers.xml', false); 
 
    xmlMarkersRequest.send(null); 
 
}

모든 것이 내가이 원하는 방법을 정확하게 작동합니다.

나는 computeDistanceBetween을 사용하여 사용자의 초기 위치 (initialLocation)와 마커의 위치 사이의 거리를 반환하는 방법을 모르겠습니다.

마커 정보는 원래 하나 이상을 추가하려고했기 때문에 XML 파일에 저장됩니다. 하지만 내 사이트에만 하나의 마커가 필요합니다, 그래서 만약 내가 고정 마커의 정보를 자바 스크립트 대신 작성해야 할 문제가 아니에요.

이 질문에 대한 답변을드립니다.

+0

[최소, 완료, 테스트 및 읽기 가능 예제] (http://stackoverflow.com/help/mcve)를 제공 할 수 있습니까? 직선 (까마귀가 날아 오듯이) 거리, 또는 주행 거리를 원하십니까? XML의 샘플뿐만 아니라 게시 된 코드에서 함수를 호출하는 방법의 예가 유용 할 것입니다. – geocodezip

답변

2
  1. 당신은 형상 라이브러리

    http://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry

  2. 두 점 사이의 거리가 그들 사이의 최단 경로의 길이를로드해야합니다. 이 최단 경로를 측지선이라고합니다. 구체에서 모든 측지학은 큰 원의 세그먼트입니다. 이 거리를 계산하려면 computeDistanceBetween(), 을 호출하고 두 개의 LatLng 객체을 전달합니다.

예 :

var a = new google.maps.LatLng(0,0); 
var b = new google.maps.LatLng(0,1); 
var distance = google.maps.geometry.spherical.computeDistanceBetween(a,b); 

distance미터의 거리가 될 것입니다.

관련 문제