Я подключаюсь к API Карт Google из PHP, чтобы геокодировать некоторые отправные точки для приложения поиска станции проката.
Эти отправные точки не должны быть точными адресами; достаточно названия городов. Ответы геокодирования с accuracy
, равным или больше 4 (уровень города / населенного пункта), используются в качестве отправных точек, и при этом производится поиск окружающих пунктов проката.
Приложение должно работать в Германии. Когда название населенного пункта неоднозначно (то есть существует более одного места с таким названием), я хочу отобразить список возможностей.
В общем, это не проблема: если вы выполняете неоднозначный поиск, вывод XML Google возвращает список <PlaceMark>
элементов вместо одного.
Очевидно, мне нужно сместить геокодирование в сторону Германии, поэтому, если кто-то вводит почтовый индекс или название населенного пункта, который существует и в других странах, на самом деле появляются только совпадения в Германии.
Я думал, что смогу добиться этого, добавив , de
или , Deutschland
к поисковому запросу. Это работает в основном нормально, но в некоторых случаях дает странные и невыносимые результаты.
Например, в Германии есть 27 населенных пунктов с именем Neustadt
. ( Википедия )
Когда я ищу только Neustadt
:
http://maps.google.com/maps/geo/hl=de&output=xml&key=xyz&q=Neustadt
Я получаю по крайней мере шесть из них, с которыми я мог бы жить (возможно, что другие не включены, или части другой местности, или что-то еще).
Когда, однако, я ищу Neustadt, de
, или Neustadt, Deutschland
, или Neustadt, Germany
, я получаю только одну из двадцати семи населенных пунктов, без видимой причины - это не самый большой и не самый точный accuracy
, а также не имеет никаких других уникальных характеристик.
Кто-нибудь знает, почему это так, и что я могу с этим поделать?
Я попробовал параметр region
, но безрезультатно - когда я не использую , de
, почтовые индексы (например, 50825
будут разрешены для их аналогов в США, а не в Германии.
Моя текущая обходная идея - добавить название страны, когда ввод только числовой, и в противном случае отфильтровать только немецкие результаты, но это звучит ужасно глупо. Кто-нибудь знает лучший способ?