2

는 내가 PHP 변수를 가지고Google Place API에 장소 ID를 반환하도록 요청하려면 어떻게해야하나요?

$location = 'London'; 

나는 또한 나의 목표는

var request = { 
    placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4' 
}; 

내 스크립트를 요청을 내지도와 장소 ID에 위치 마커를 표시하는 자바 스크립트 구글지도 API v3의이 이런 식으로, 내 PHP 변수의 ID를 배치하고 내 마커의 위치에 ID를 인쇄 : 나는 $ locati의 장소 ID를 전달할 수있는 방법

var request = { 
    placeID: '<?=$_locationID;?>' 
}; 

을 $ _locationID 값으로?

답변

0
$data = "https://maps.googleapis.com/maps/api/place/textsearch/xml?query=".$location."&key=YOUR_KEY_HERE"; 

$xml = file_get_contents($data); 
$xml = simplexml_load_string($xml); 

foreach($xml->result->place_id as $key => $value){ 
    $location_id = $value; 
} 

를 = '런던'

지도 자바 스크립트로 최종 결과는

enter image description here

1

당신은에서 TextSearch를 사용하여 작업을 수행 할 수 있습니다 - 당신은 "런던"검색

function geoPlaceID($location){ 
    $locationclean = str_replace (" ", "+", $location); 
    $details_url = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=" . $locationclean . "&key=YOUR_API_KEY"; 
    $du = file_get_contents($details_url); 
    $getDetails = json_decode(utf8_encode($du),true); 
    if ($getDetails['status']=="OK"){ 
     return $getDetails['results'][0]['place_id']; 
    } 
    else{ 
     return "Place ID not found"; 
    } 
} 

쿼리 결과 1 개 이상의 결과가 포함 : 당신이 이름을 검색하면

{ 
    "html_attributions" : [], 
    "results" : [ 
     { 
     "formatted_address" : "London, UK", 
     "geometry" : { 
      "location" : { 
       "lat" : 51.5073509, 
       "lng" : -0.1277583 
      }, 
      "viewport" : { 
       "northeast" : { 
        "lat" : 51.6723432, 
        "lng" : 0.148271 
       }, 
       "southwest" : { 
        "lat" : 51.38494009999999, 
        "lng" : -0.3514683 
       } 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png", 
     "id" : "b1a8b96daab5065cf4a08f953e577c34cdf769c0", 
     "name" : "London", 
     "place_id" : "ChIJdd4hrwug2EcRmSrV3Vo6llI", 
     "reference" : "CoQBdgAAAEaMNGBLSJDQzPro1sZAjnWPObrVhKk_U0-oQ9HDOhJG5Z0gUd6ZfkuvhIXOeNhs7KFRMC84dGTj_mLaXC9tXhZtluPztMwUFOTg99vDXpsccnh4iyhrYfJBZNMNOSzrLOUdXAfnBTb18EclrhWBmAbKQ8aLzJEtZyQOqc3i3FEYEhAGxbUwRj6GFekMSU19_8NaGhS03o6gl1eWpWdx5AmiKJ-oMKTRuQ", 
     "types" : [ "locality", "political" ] 
     }, 
     { 
     "formatted_address" : "London, ON, Canada", 
     "geometry" : { 
      "location" : { 
       "lat" : 42.9869502, 
       "lng" : -81.243177 
      }, 
      "viewport" : { 
       "northeast" : { 
        "lat" : 43.073245, 
        "lng" : -81.1063879 
       }, 
       "southwest" : { 
        "lat" : 42.824517, 
        "lng" : -81.390852 
       } 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png", 
     "id" : "fab6815aadba41e81aa7bd51a445c4924317ec88", 
     "name" : "London", 
     "place_id" : "ChIJC5uNqA7yLogRlWsFmmnXxyg", 
     "reference" : "CoQBfgAAANqxMzFC52IV0GIn-ORiCKA5gKmt0L-CPyQJLC18UNjggnHMy0HkRN_BK5ylwViFGt_u6KsEKu9ZnhGySBrkDOdZdsFDHRJQezW1uQrBs9jc8zNF8QxlHuKh2CvncuNQbqM1kfqtpa0WXA6__0zarFTiaWff1SAJY-v4Ix9vaK0JEhCtT-q0QzngXMnALyPbp7qSGhSlejUY7ilJRTG4SfpeNRrKzZYksQ", 
     "types" : [ "locality", "political" ] 
     }, 
     { 
     "formatted_address" : "London, KY, USA", 
     "geometry" : { 
      "location" : { 
       "lat" : 37.1289771, 
       "lng" : -84.08326459999999 
      }, 
      "viewport" : { 
       "northeast" : { 
        "lat" : 37.1522599, 
        "lng" : -84.03595709999999 
       }, 
       "southwest" : { 
        "lat" : 37.0797589, 
        "lng" : -84.126262 
       } 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png", 
     "id" : "692adb38e4db9759599d6f73f300a3bba7db714a", 
     "name" : "London", 
     "place_id" : "ChIJA8c2lxTNXIgRmMwHc-RRGWI", 
     "reference" : "CoQBewAAAOQz_2KNfQsQ7ph5U5cUQKjAka2ckTsdzNhyvChJKeep9MRnv4Si4mo4xBHnNtC44-mToEuALwktcuQaoevRj-AVbBX6rvwUQHkY9KuiomTgocq1uBriE0FNk1m8PEhsOHFbVxpGB61tTL-aC7NLGyix-gpBk90wfvFL6WnMtEGbEhAn2hYFbt2MymyoD56sbNEJGhTZEFCIBDTbYIY4_LTbEXtb823GYg", 
     "types" : [ "locality", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

따라서는 더 낫다 그 장소에 대한 Google지도에서 사용되는 장소의 이름을 사용했다면 그 장소의 정보가 올바르게 표시됩니다. 예 : 검색 할 때 "런던, 영국"는 하나 개의 결과 만 줄 것이다 :이 경우에, 내 $ 위치를 나는 각 위치에 대한 올바른 ID를 반환 한이 코드

{ 
    "html_attributions" : [], 
    "results" : [ 
     { 
     "formatted_address" : "London, UK", 
     "geometry" : { 
      "location" : { 
       "lat" : 51.5073509, 
       "lng" : -0.1277583 
      }, 
      "viewport" : { 
       "northeast" : { 
        "lat" : 51.6723432, 
        "lng" : 0.148271 
       }, 
       "southwest" : { 
        "lat" : 51.38494009999999, 
        "lng" : -0.3514683 
       } 
      } 
     }, 
     "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png", 
     "id" : "b1a8b96daab5065cf4a08f953e577c34cdf769c0", 
     "name" : "London", 
     "place_id" : "ChIJdd4hrwug2EcRmSrV3Vo6llI", 
     "reference" : "CoQBdQAAAB9gHd2srTAOUumLaGYrpjppDaNOVEqRrMa58s9SADNLRXGPzLyEgLQ17zOuhJXa3ygKO-14zz6zKxNCwO24MS5zvP60EviITZlvou6exZBlIapBPcZNsFYHWlw7wTzYaj4jWqj1eZPO6FZJ2eyYeKCldZfQVT_4sMWAXmIdxklDEhCOnCuvdUriA6kyIjN4HJ6RGhQnnkzVDVFCui_lEGziSfPKmY1T7g", 
     "types" : [ "locality", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 
+0

내가 그것을 훨씬 쉽게 XML을 통해 요청하고 PHP의 SimpleXML을 기능을 사용하여 구문 분석하는 것으로한다. – zak

+0

이걸 할 수 있습니다. 처음에는 귀하의 질문에 혼란스러워서 미안해, 나는 당신이 장소 ID를 가지고, 네, PHP에 대한 참조 주셔서 감사합니다 줄 알았는데. php로 코딩하는 동안 잠시있다. 어쨌든, 당신은 여전히 ​​모든 장소의 이름으로 조금주의를 기울여야합니다. 당신이 문제를 해결할 수 있다는 것을 아는 것이 좋습니다. –

관련 문제