2016-04-11 17 views
1

Özelleştirilmiş bir Harita içindeki konum için otomatik tamamlama araması gerçekleştirmek için google geocoding API'sini kullanıyorum. Ben bir istek böyle yapın:Google Geocoding API Belirsiz arama sorgusunda beklenmedik sonuç

{ 
     results: [ 
     { 
      address_components: [ 
      { 
       long_name: "Frankfurt am Main", 
       short_name: "Frankfurt am Main", 
       types: [ 
       "locality", 
       "political" 
       ] 
      }, 
      { 
       long_name: "Darmstadt", 
       short_name: "DA", 
       types: [ 
       "administrative_area_level_2", 
       "political" 
       ] 
      }, 
      { 
       long_name: "Hessen", 
       short_name: "HE", 
       types: [ 
       "administrative_area_level_1", 
       "political" 
       ] 
      }, 
      { 
       long_name: "Deutschland", 
       short_name: "DE", 
       types: [ 
       "country", 
       "political" 
       ] 
      } 
      ], 
      formatted_address: "Frankfurt am Main, Deutschland", 
      geometry: { 
      bounds: { 
       northeast: { 
       lat: 50.2272095, 
       lng: 8.8003977 
       }, 
       southwest: { 
       lat: 50.0152145, 
       lng: 8.4727299 
       } 
      }, 
      location: { 
       lat: 50.1109221, 
       lng: 8.6821267 
      }, 
      location_type: "APPROXIMATE", 
      viewport: { 
       northeast: { 
       lat: 50.2272095, 
       lng: 8.8003977 
       }, 
       southwest: { 
       lat: 50.0152145, 
       lng: 8.4727299 
       } 
      } 
      }, 
      place_id: "ChIJxZZwR28JvUcRAMawKVBDIgQ", 
      types: [ 
      "locality", 
      "political" 
      ] 
     } 
     ], 
     status: "OK" 
    } 

Sorun tepkisi Almanya'da bulunan tüm Frankfurts içermelidir olmasındandır: Geri sadece bir sonuçla bu yanıtı aldık

http://maps.googleapis.com/maps/api/geocode/json?address=frankfurt&components=country[de]

. (Frankfurt, Main + Frankfurt, Oder). Ama sadece Frankfurt, Main ile cevap veriyor. Aynı şey diğer yer isimlerinde de oluyor, teoride en az iki kere var. Ama google sadece birini gösterir. Muhtemelen en uygun olanı.

Bunu değiştirmenin bir yolu var mı? Ya da başka bir Geocode servisini daha iyi kullanabilir misiniz?

Bileşen filtrelerini kullanmayı denedim, ancak bu hiçbir şey değişmedi.

+0

Bu soruda gözüme çarpan pek çok şey, xomena'nın cevabı hepsini kapsıyor ama bunlardan biri: ülke [de] doğru biçimlendirilmemiş ve göz ardı edilecek, ülke = de kullanmanız gerekiyor – miguev

cevap

2

Bu, Coğrafi Kodlama API'sinin amaçlanan bir davranıştır. En göze çarpan sonuç geri gelecek. Ancak, 5 öneriye geri dönebilen Autocomplete request of Places API'u kullanabilirsiniz.

Ülkeye göre bir bileşen filtresi ayarlayabilir ve şehirleri türlerle sınırlayabilirsiniz. Aşağıdaki isteği üzerine bakınız: Bu istek döndüren

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Frankfurt&types=(cities)&components=country%3ADE&key=YOUR_API_KEY

hem "Frankfurt, Almanya" (yer Kimlik ChIJxZZwR28JvUcRAMawKVBDIgQ) ve "Frankfurt an der Oder, Almanya" (yer Kimlik ChIJb_u1AiqYB0cRwDteW0YgIQQ).

ayrıca kazmak için her yerde kimliği için coğrafi kodlama isteklerini yürütebilirsiniz:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJb_u1AiqYB0cRwDteW0YgIQQ&key=YOUR_API_KEY

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJxZZwR28JvUcRAMawKVBDIgQ&key=YOUR_API_KEY yardımcı olur Umut.

İlgili konular