Google Maps Geocoding API - ülke kutuplama, tuhaf sonuçlar

2 Cevap php

Ben bir kiralama istasyonu bulucu uygulaması için bazı başlangıç ​​noktaları geocode için PHP Google Maps API bağlıyorum.

Bu başlangıç ​​noktaları tam adreslerini olmak zorunda değilsiniz; şehir adları yeterlidir. 4 (şehir / yerellik düzeyinde) daha bir accuracy eşit veya rende ile coğrafi kodlama tepkiler başlangıç ​​noktası olarak kullanılan ve çevredeki kiralama istasyonları aranır.

Uygulama Almanya'da çalışmak gerekiyordu. Bir yöreden isim belirsiz olduğunda (yani bu isimde birden fazla yer vardır) Ben olasılıklar listesini görüntülemek istiyorum.

Bu genel bir sorun değildir: Eğer belirsiz bir arama yaparsanız, Google XML çıkış yerine sadece biri <PlaceMark> elemanlarının bir listesini döndürür.

Açıkçası, ben önyargı Almanya'ya doğru coğrafi kodlama gerekir, bu yüzden birileri gibi diğer ülkelerde de var olan bir mahallin bir posta kodu veya adı girerse, sadece gelip Aslında Almanya'da vurur.

Ben arama sorgusuyla , de veya , Deutschland ekleyerek bu elde düşündüm. Bu, çoğunlukla iyi çalışır, ancak bazı durumlarda tuhaf ve dayanılmaz sonuçlar üretir.

Adlı Almanya'da 27 yerleşim örneğin vardır Neustadt. (Wikipedia)

I Neustadt yalnız ararken:

http://maps.google.com/maps/geo/hl=de&output=xml&key=xyz&q=Neustadt

Ben (bu diğerleri dahil, ya da farklı bir yöreden, veya ne olursa olsun parçaları olmadığı olabilir) ile yaşayabileceği bunlardan en az altı, olsun.

Ne zaman, ancak, ben Neustadt, de aramak, ya da Neustadt, Deutschland, ya da Neustadt, Germany, ben sadece one yirmi yedi yerlesim olsun nedensiz - bu büyük değil, ne de en accuracy doğru, ne de herhangi bir diğer benzersiz özellikleri var.

Bu yüzden herkes biliyor mu, ve ben bu konuda ne yapabilirim?

Ben region parametresini çalıştı ama boşuna - Ben Alman, ABD'li meslektaşları için değil çözülecek (50825 gibi , de, posta kodları kullanmayın zaman olanlar.

Benim şu anki geçici fikrim girişi sadece sayısal olduğunda ülke adını ekleyin, aksi takdirde sadece Alman sonuçları filtrelemek için, ama bu çok kıytırık geliyor. Herkes daha iyi bir yol biliyor mu?

2 Cevap

Bu kesinlikle ayrıntılı bir cevap değil, ama sadece bir kaç not:

  1. Google yakın zamanda new V3 API lehine önerilmemektedir hangi, old V2 version of the Geocoding API kullanıyorsunuz. Google artık yeni servisi kullanmak için öneriyor, ve ben yeni sürümü ile gerçek bir deneyime sahip iken, özellikle tepki yapısı ile, çeşitli noktalarda hizmet düzeldi gibi görünüyor. Sen yeni servisi kullanmak için bir API anahtarı gerekmez, ve sadece biraz farklı bir URL kullanmak gerekir:

    http://maps.google.com/maps/api/geocode/xml?address=Neustadt&sensor=false

  2. Eğer bunların doğruluğu mülkiyet işaretleri için filtreleme olduğunu belirtti. Bu alanda yeni Geocoding API sonuçlarında artık görünmüyor, ama her durumda, ben o eski API hala çok güvenilir değildi düşünüyorum unutmayın.

  3. Sen bounds ve yeni API region parametreleri kullanmak için denemek isteyebilirsiniz, ama ben yine de sorununuzu çözecektir şüpheliyim.

Ben Google Geocoder en azından bir "sokak, yerellik, ülke" biçiminde bunu tam adres vermek zaman için harika bir araç olduğunu ve herhangi uğraşmak zorunda değil zaman da diğer formatlarda çok güvenilir olduğuna inanıyorum belirsizlikler (Geocoding "London, UK" her zaman benim için çalıştı).

Ancak, durumda, ben gerçekten her Alman yöredeki tüm koordinatlarını öncesi bilgisayar düşünün ve sadece veritabanı içinde geocoding kendinizi idare. Ben senin uygulaması sadece bir ülkeye lokalize özellikle bu oldukça uygun olduğunu düşünüyorum. Her kasaba Wikipedia "List of German Towns" ayrıştırmak çok kolay görünüyor <span> düzgün bir küçük içinde depolanan koordinatları var gibi görünüyor:

<span class="geo">47.84556; 8.85167</span>

Google altı daha iyi olabilir o listedeki on altı Neustadts vardır :)

Bulunan google otomatik tamamlama kendi GEOCODE sonra daha iyi çalışır

http://code.google.com/apis/maps/documentation/javascript/places.html#places_autocomplete