다음 쿼리 (우편 번호는 11368
)입니다. 나는 자동 완성 객체 (안 서비스) 내가 맨 위에있는 우편 번호의 실제 지역을 얻고을 만들 때Google의 AutocompleteService 및 Autocomplete가 동일한 검색어로 다른 결과를 반환합니다.
는 :
autocomplete = new google.maps.places.Autocomplete(
document.getElementById('PlaceSearch'),
{ types: ['(regions)'] });
[...]
이는 다음과 같습니다
이 코드입니다 정확히 내가 원하는 것. 그러나, 나는 사용자 정의 자동 완성 시스템을 설계상의 이유 때문에 현장에서 사용해야하므로 동일한 UI가 아닌 코드 전용 버전 인 AutocompleteService
으로 이동했습니다 (최소한 반드시 있어야 함). 내 자동 완성 서비스를 만들 :
x = new google.maps.places.AutocompleteService();
을 그리고 사용
내가 description
을 사용하고 있습니다 :
x.getQueryPredictions({ input: key }, function (results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
[...]
});
});
그러나,이 내가 결과에서 무엇을 얻을 속성을 사용하면 항목을 표시 할 수 있지만 반환 된 loca의 첫 번째 항목의 장소 ID는 문제가 아닙니다. 비록 정확히 동일한 쿼리를 타이핑하더라도 tions는 완전히 다릅니다.
가 나는 또한 시도했다 :
x.getQueryPredictions({ input: key, types: ['(regions)'] }
,
x.getQueryPredictions({ input: key, types: ['(geocode)'] }
x.getQueryPredictions({ input: key, types: ['geocode'] }
typeahead
레벨의 질문에 대한 답변이지만 내 쿼리의 결과는 API 수준에서 올바르지 않고 선견지명이 없습니다. 필자는 자동 완성 서비스에서 직접 콜백 함수를 사용하여 디버거를 검사했습니다.
나는 다음 두 경우 모두에서 네트워크 요청을 검사하고 여기에 작업의 요청입니다했습니다
https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetPredictions?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._qxy1y2&token=45006
올바른 JSON을 반환합니다. 여기
잘못된 JSON을 반환하는 요청입니다 :https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetQueryPredictionsJson?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._38p24d&token=20471
그리고 그것은 잘못된 JSON을 반환합니다. 내가 알기로 을 types
매개 변수로 전달해야하며 이는 여전히 잘못된 것입니다. 더 우스꽝 스럽지만 두 쿼리의 유일한 차이점은 token
이라는 변수입니다 (잘못된 쿼리의 토큰을 올바른 것으로 바꾸려고 시도했지만 The Google Maps JavaScript API must be downloaded directly from Google's servers.
오류가 있음). 콜백 함수는 아무 것도 없습니다. 반환 된 JSON과 관련있다.내가 생각할 수있는 유일한 것은 구글이 서버의 초기화 레벨에서 서버/인스턴스 (따라서 토큰)에 바인딩 된 토큰을 반환하는 동안 서버에서 뭔가를 수행한다는 것입니다.
무엇이 잘못 되었습니까? Google 자체의 선행 기입 구현으로 프로그래밍 방식으로 동일한 결과를 얻으려면 어떻게해야합니까?