Различать ответы API между селами и улицами без номера
Мы намерены использовать API геокодирования Карт Google на нашем веб-сайте. Мы хотим использовать API автозаполнения Google Адресов и преобразовать адрес в (X,Y) координаты с помощью API геокодера.
Тем не менее, во Франции некоторые почтовые адреса форматируются с помощью деревушки или небольшой деревни и города (и это правильные адреса) вместо классического "числа, улицы и города".
Ответ геокодирования для этого вида адресов:
- part_match =
empty
- тип местоположения =
GEOMETRIC_CENTER
или жеRANGE_INTERPOLATED
- тип =
route
Но это тот же ответ, что и название улицы без номера улицы.
Есть ли способ разграничить ответы API между "деревнями" и "улицами без номера"?
Спасибо за понимание.
[ РЕДАКТИРОВАТЬ ] Вот пример моей проблемы:
- Запрос Гамлета: http://maps.googleapis.com/maps/api/geocode/json?address=La+Croix+Fay-de-Bretagne+France&sensor=false
- Запрос улицы без номера: http://maps.googleapis.com/maps/api/geocode/json?address=avenue+Charles+Couchoud+Nantes+France&sensor=false
Оба возвращают то же самое location_type
:
"location_type" : "GEOMETRIC_CENTER"
1 ответ
Короткий ответ - ваш пример с Гамлетом фактически разрешает улицу: Ссылка на карту
Чтобы ответить на ваш общий вопрос (предположим, что это происходит в другом месте, где это не улица), как узнать, как API геокодирования определил частичное совпадение. Если вы получаете маршрут, это должно означать, что вы вернули улицу (с номером или без него). Гамлет должен появиться как sublocality
или neighborhood
если не его собственная местность (здесь, в Канаде, это то, что я видел):
* Обратите внимание, что это НЕ действительные почтовые адреса в Канаде, поэтому мои примеры немного отличаются от указанных вами критериев.
Чтобы узнать, является ли маршрут точным соответствием или предположением, где коды состояния входят:
Из Документа API:
"ROOFTOP" indicates that the returned result is a precise geocode for which we have location information accurate down to street address precision. "RANGE_INTERPOLATED" indicates that the returned result reflects an approximation (usually on a road) interpolated between two precise points (such as intersections). Interpolated results are generally returned when rooftop geocodes are unavailable for a street address. "GEOMETRIC_CENTER" indicates that the returned result is the geometric center of a result such as a polyline (for example, a street) or polygon (region). "APPROXIMATE" indicates that the returned result is approximate.
Я ожидаю, что вы увидите GEOMETRIC_CENTER
чаще для neighborhood
а также sublocality
а также RANGE_INTERPOLATED
чаще для дорог - но это предположение, и я думаю, что это зависит больше от того, сколько у них данных о местоположении и как алгоритм в конечном итоге вычисляет точку.
Когда у вас есть Гамлет, возвращающийся как route
Я не верю, что есть какой-то способ сказать только из возвращенных данных API геокодирования, что именно это и произошло. Единственное решение, которое я мог бы придумать, - это обрабатывать эти случаи в коде вашего приложения на основе списка известных проблем, но я вижу, что это очень проблематично и трудоемко.
Возможно, это говорит о том, что понятие "деревушка" является почтовым / административным, которое вообще не переводится в картографические данные? Я попытался найти La Croix здесь, и мне не повезло отличить: http://www.laposte.com/find_a_post_code/find
Еще одно примечание: если API геокодирования разрешил Гамлет, а также улицу, из которой вы должны были выбрать несколько результатов, например, Ярмут. Обратите внимание, что список типов в конце также показывает тип возвращаемых результатов, если у вас есть несколько результатов.: "types" : [ "locality", "political" ]
Обновить
Мне нужно было еще несколько примеров, и я решил поискать примеры, которые также помогли бы вашему вопросу. Я нашел этот список французских деревушек. Попробовав несколько, я получил следующие результаты:
- Blessey: местность
- Бретиньи: местность
- Hautacam: Либо не удается найти вообще, либо это парк и показывается как местность
- Ла Монжи: местность
- Ветчина / духовенство: местность. Похоже, что некоторые из них могут выступать в качестве местностей - возможно, порога размера - многие из локальных мест невероятно малы.
Я думаю, вы можете с уверенностью предположить, что если что-то оценивается как маршрут, то ваш результат для улицы, а не для хомяка <- (и думать, что я плохо справился с французским погружением здесь, в Канаде). Кроме того, если вы получаете маршрут и подобласть в результатах, это безопасная ставка, которая есть какая.
И наконец, если вы знаете, что адресная часть у вас есть, а не улица, и вы хотите указать это в адресе, я не верю, что API Google позволяет это. Есть и другие сервисы, такие как ESRI. Я не использовал их и не знаю, как работает лицензирование в деталях, но, похоже, у них есть бесплатный сервис и сервис подписки, очень похожий на Google.
И просто для полноты - я думаю, что нашел La Croix, используя сайт ESRI в "address": "La Croix, L'Île-d'Yeu"
Запись из этого списка - недостатком является то, что он не узнал Фэй-де-Бретань и не дал ни одного ответа.