2016-12-22 14 views
7

Aşağıdaki kodu kullanıyorum: Posta kodu: 11368. Bir otomatik tamamlama nesne (servis) Üst zip kodun gerçek bölgesiyle alıyorum oluşturduğunuzdaGoogle'ın Otomatik TamamlamaService ve Otomatik Tamamlama aynı sorguyla farklı sonuçları döndürüyor

:

autocomplete = new google.maps.places.Autocomplete(
     document.getElementById('PlaceSearch'), 
     { types: ['(regions)'] }); 
     [...] 

budur:

enter image description here

Bu kodudur tam olarak ne istediğimi. Bununla birlikte, tasarım nedenleriyle özel bir otomatik tamamlama sistemi site bilgisi kullanmam gerekiyor. Bu nedenle, aynı şeyin (yalnızca en azından olması gereken) UI olmayan, yalnızca kod sürümü olan AutocompleteService'a geçtim. Benim otomatik tamamlama hizmeti oluşturun:

x = new google.maps.places.AutocompleteService();

Ve kullanın:

enter image description here

Ben description kullanıyorum:

x.getQueryPredictions({ input: key }, function (results, status) { 
if (status == google.maps.places.PlacesServiceStatus.OK) { 
      [...] 
    }); 
}); 

Ancak bu ben sonuçlarından elde ediyoruz özelliği görüntülemek için özellik, ancak geri dönen loca ilk girdinin yer kimlikleri olarak sorun değil Tam olarak aynı sorguda yazmam olsa bile, iyonlar tamamen farklıdır.

Ben de denedim:

x.getQueryPredictions({ input: key, types: ['(regions)'] },

x.getQueryPredictions({ input: key, types: ['(geocode)'] }

,

x.getQueryPredictions({ input: key, types: ['geocode'] }

Ancak bu hiç herhangi etkisi yoktur. Tam olarak aynı. Ben de Different result between google maps Autocomplete and AutocompleteService gördük ama cevap benim soruşturma sonuçları bile yanlış yazım olmadan API düzeyinde yanlış iken typeahead düzeyinde bir soru cevaplar; Otomatik tamamlama hizmetinden doğrudan geri arama işlevinde bir hata ayıklayıcı ile kontrol ettik.

Sonra iki durumda en ağ isteklerini kontrol ve burada çalışan en talebidir ettik:

https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetPredictions?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._qxy1y2&token=45006

Doğru JSON döndürür. İşte

yanlış JSON döndüren istek:

https://maps.googleapis.com/maps/api/place/js/AutocompletionService.GetQueryPredictionsJson?1s11368&4sen-US&9s(regions)&15e3&key=XXXXXX&callback=_xdc_._38p24d&token=20471

Ve yanlış JSON döndürür. Gördüğüm kadarıyla (regions)'da types parametresi olarak geçmem gerekiyor ve hala yanlış. Daha saçma, iki sorgunun arasındaki tek fark token (yanlış sorgunun belirtecini doğru olanla değiştirmeyi denedim ama The Google Maps JavaScript API must be downloaded directly from Google's servers. hatası var) ve geri arama işlevi var. iade JSON ile yapmak.Bunu düşünebildiğim tek şey, Google'ın sunucuda başlatma düzeyinde bir şeyler yapmasıdır, bu sırada sunucuya/örneğe bağlı olan belirteci döndürür (dolayısıyla belirteç).

Neyi yanlış yapıyorum ve aynı sonuçları Google’ın kendi typeahead uygulamasını programlı olarak nasıl edinebilirim?

cevap

2

Çözümü buldum. getPredictions yerine getQueryPredictions çağırıyordum ve farklı sonuçlar veriyordu. Kodumu getPredictions'u aramak için değiştirdim ve düzgün çalışmaya başladı.