2014-11-24 6 views
0

JQ로 Lat 및 Long 값에서 국가 및 도시 이름을 가져 오려고합니다. 여기 JQ (JQuery가 아님)의 지오 코딩을위한 Google Maps JSON 데이터 구문 분석

이 나라와 도시 이름을 선택 려다 내가 jqplay에서 JSON을 반환 붙여

https://maps.googleapis.com/maps/api/geocode/json?latlng=55.397563,10.39870099999996&sensor=false, JSON 전체 예,하지만 난이 얻을 가장 가까운

.results[0].address_components[].short_name 

어떻게입니다 나는 단지 노드를 가지고 지정한다. "types" : [ "country", "political" ]?

감사합니다.

답변

0

그것은 정확하게 당신이 찾고있는 나에게 불분명하다. 각 결과에는 유형 세트가 있으며 각 주소 구성 요소에는 유형 세트가 있습니다. 어느 것을 원했습니까? 시도한 내용과 일치하는 필터를 작성할 수는 있지만 데이터를 고려하면 완전히 쓸모가 없습니다. 나열한 유형이 포함 된 유일한 항목은 국가 이름입니다.

어쨌든 유형이 "country""political" 인 결과 개체를 얻으려는 경우 필터를 사용하십시오.

.results | map(
    select(
     .types | contains(["country","political"]) 
    ) 
) 

그렇지 않으면이 데이터 세트에서 정확히 원하는 것을 분명히해야합니다. 예상 결과의 예 ...

0

이 기능을 작성했습니다.

/** 
* geocodeResponse is an object full of address data. 
* This function will "fish" for the right value 
* 
* example: type = 'postal_code' => 
* geocodeResponse.address_components[5].types[1] = 'postal_code' 
* geocodeResponse.address_components[5].long_name = '1000' 
* 
* type = 'route' => 
* geocodeResponse.address_components[1].types[1] = 'route' 
* geocodeResponse.address_components[1].long_name = 'Wetstraat' 
*/ 
function addresComponent(type, geocodeResponse, shortName) { 
    for(var i=0; i < geocodeResponse.address_components.length; i++) { 
    for (var j=0; j < geocodeResponse.address_components[i].types.length; j++) { 
     if (geocodeResponse.address_components[i].types[j] == type) { 
     if (shortName) { 
      return geocodeResponse.address_components[i].short_name; 
     } 
     else { 
      return geocodeResponse.address_components[i].long_name; 
     } 
     } 
    } 
    } 
    return ''; 
} 

사용 방법. 예 :

... 
myGeocoder.geocode({'latLng': marker.getPosition()}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK && results[1]) { 
    var country  = addresComponent('country', results[1], true); 
    var postal_code = addresComponent('postal_code', results[1], true); 
    ... 
    } 
}); 
... 

내가 여기 사용 : saving marker data into db

0

결과 변수 var에 결과 = {당신의 JSON}에 JSON을 할당합니다. 그런 다음이 시도 :

for(var idx in results.results) 
{ 
    var address = results.results[idx].address_components; 
    for(var elmIdx in address) 
    { 
     if(address[elmIdx].types.indexOf("country") > -1 && 
      address[elmIdx].types.indexOf("political") > -1) 
     { 
      address[elmIdx].short_name //this is the country name 
      address[elmIdx].long_name //this is the country name 

     } 
    } 
}