2011-01-13 1 views
1

Google지도 API에 지오 코딩 서비스의 결과를 특정 지역으로 제한하는 데 문제가 있습니다.Google지도 API가 지역 힌트를 사용하지 않습니다.

문제를 재현하는 간단한 예는 여기에 있습니다 : http://jsfiddle.net/pqZGr/

자바 스크립트 코드는 정말 간단하다 :

$(document).ready(function() { 
    var geocoder = new google.maps.Geocoder(); 
    $("#name").autocomplete({ 
     source: function (request, response) { 
      geocoder.geocode({ 'address': request.term, 'region': 'it' }, function (results, status) { 
       response($.map(results, function (item) { 
        return { 
         value: item.formatted_address 
        } 
       })); 
      }) 
     } 
    }); 
}); 

가 나는 또한 요청의 'region': 'it' 외에 http://maps.google.com/maps/api/js?region=it&language=it&sensor=false으로 API의 URL을 지정했습니다. 당신이 mil (Milano의 begininning를) 검색 나는 Circondario di Miltenberg, GermaniaMilion, Alemdar Mh., 34122 Istanbul/Provincia di Istanbul, Turchiareka Mil', Sacha-Jacuzia, Russia을받을 경우

문제는 예를 들어 이탈리아

제한 (도 암시) 할 수 있습니다 구글에 의해 반환되는 주소입니다.

전 세계에서 오는 결과 (이탈리아의 경우는 없으며 mil와 일치하는 도시가 여러 곳이라도 있음)가 반환됩니다.

내가 뭘 잘못하고 있니?

부수적으로, 전체 주소가 아닌 도시에만 검색을 제한 할 수 있습니까?

미리 감사드립니다.

답변

0

Google지도 API에 실제로 Google 지역 정보 자동 완성 API standalone 또는 built in을 사용해야하는 것 같습니다.

지오 코딩 서비스는 자동 완성 쿼리 용으로 설계되지 않았으므로 원하는 결과를 반환하지 않습니다. 지역 매개 변수는 당신이 말한 것처럼 힌트이지만 제한이 없기 때문에 이탈리아에 적절한 "밀"이 없거나 다른 곳에서 훨씬 더 좋은 성냥이 있다면 그 결과를 얻을 수 있습니다.

결과를 도시로만 제한하는 방법은 없습니다.

0

jQuery UI와 함께 Google 지오 코더 자동 완성을 사용하는 경우 ui.geo_autocomplete.js, 46 행에서 한 줄을 편집하고 해당 지역을 추가 할 수 있습니다. 그것은 100 % 정확하지지만, 발견 주소의 수를 줄일 수 있습니다 :

this.options._geocoder.geocode({'address': _address + ' YOUR_REGION_HERE'}, function(_results, _status) 
: 교체

this.options._geocoder.geocode({'address': _address}, function(_results, _status)