2014-12-12 3 views
-3

택시 운전사와 고객 간 이동 거리를 계산하는 택시 응용 프로그램입니다. 어느 택시 기사가 고객에게 더 가까이 있는지 알고 있어야합니다.위도와 경도가 지정된 두 위치 간 주행/주행 거리 계산 (빙지도)

나는 택시 드라이버의 모든 위치가 웹 데이터베이스에 저장되어 있습니다. 그리고 lat1, lat2 long1, long2를 사용하고 Kilo 미터에서 거리를 반환하는 메소드를 검색했습니다.

구글지도는 거리 매트릭스 API를 가지고 있지만지도
(나는이에 대한 가능한 해결책을 알고 있다면, 나는 구글 -지도 서비스를 사용할 수 있습니다,지도가 필요하지 않습니다) 표시하지 않고 그것을 사용 금지 다행히 Bing 맵을 사용하면지도를 표시하지 않고도 여행 거리를 계산할 수 있습니다! http://msdn.microsoft.com/en-us/library/gg636957.aspx

하지만 그것으로 견인 문제에 직면하고있다 : 아래의 튜토리얼
*는 문자열 (위치 이름)으로 위치를 소요하고 나는 플로트 (위도 및 긴)
* I로주고 싶어 PHP와 XML을 사용하는 방법을 모르는

내가 일주일 동안 검색 한 나는 당신의 도움()

+0

구글 매트릭스 API는이 말을하지 않습니다 ... https://developers.google.com/maps/documentation/distancematrix/#DistanceMatrixRequests 이것은 JSON을 반환 -> https://maps.googleapis.com/maps/api/distancematrix/json? 출발지 = 밴쿠버 + BC | 시애틀 및 목적지 = 샌프란시스코 + 프란시스코 | 빅토리아 + BC 모드 = bicycling & language = fr-FR –

+1

@MarcoMura 그들은 서비스 약관에 따라지도없이 사용하는 것이 좋습니다. 링크를 위해 – Lana

답변

1

당신은 변환 할 수 있습니다 매우 감사 할 것 (방법 PHP 변수에 거리를 운전 저장하기) 위치 이름을 Google Maps Geocoding API를 사용하여 위도와 경도로 변환합니다. https://developers.google.com/maps/documentation/geocoding/

당신은 json_decode를 사용하여 PHP 객체와 콘텐츠에 액세스 할 수 있습니다 : 예를 들어

$location = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA");

문서를 않습니다. 그래서이 작동합니다 :

print_r(json_decode($location));

위의 위치 변수를 사용. 위도와 경도가 거기에 있습니다. PHP의 XML에 관해서는

: http://php.net/manual/en/simplexml.examples-basic.php

당신은 당신이 두 위치의 위도와 경도가 있다면 당신은 거리를 직접 계산할 수있다, 그런데 거리 API를 필요가 없습니다 SimpleXMLElement 아마 가장 쉬운 사용 . 가장 간단한 방법은 단순히 삼각형과 피타고라스이지만 지구가 구이므로 정확한 것은 아닙니다. 이 스 니펫을 복사하여 붙여 넣을 수 있습니다. 나는 http://www.geodatasource.com/developers/php에서 가져 갔다.

function distance($lat1, $lon1, $lat2, $lon2, $unit) { 

    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) 
    * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) 
    * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $miles = $dist * 60 * 1.1515; 
    $unit = strtoupper($unit); 

    if ($unit == "K") { 
    return ($miles * 1.609344); 
    } else if ($unit == "N") { 
    return ($miles * 0.8684); 
    } else { 
    return $miles; 
    } 
} 
관련 문제