2017-02-16 10 views
0

Я использую Google Maps Geocoding API web service, и я использую параметр components для ограничения результатов на «Лондон». Мой URL запрос здесь:Ограничение компонентов API геокодирования Google Maps

https://maps.googleapis.com/maps/api/geocode/json?address=<address>&components=administrative_area:london, united kingdom

Это работает очень хорошо, и я только получить результаты, которые находятся в пределах Лондона. Однако, если я прошу что-то определенно не в Лондоне (например, «Манчестер»), я просто получаю возврат по умолчанию, относящийся к «Большому Лондону». Я бы предпочел, чтобы он просто возвращал статус ZERO_RESULTS. Есть ли способ указать это?

P.S Я попытался использовать параметр region, но это не так сильно, как я хочу.

ответ

0

Используя информацию нашли на https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering

Вы можете фильтровать по городу (н.п.) и страны в двух отдельных компонентов фильтра, и они могут быть отделены друг от друга трубы (|) символов. Страна является кодом страны ISO 3166-1 [https://en.wikipedia.org/wiki/ISO_3166-1], поэтому GB, чтобы покрыть город Лондон.

Таким образом, этот формат может быть использован:

https://maps.googleapis.com/maps/api/geocode/json?address=<address>&components=locality:London|country:UK 

Имея это в виду, и обращаясь ваш точный вопрос, в соответствии с https://developers.google.com/maps/documentation/geocoding/intro#ComponentFiltering

значения фильтра поддерживают одни и те же методы коррекции орфографии и частичное совпадение, как и другие запросы геокодирования. Если результат геокодирования составляет , то для частичного соответствия для фильтра компонента он будет содержать поле partial_match в ответе.

Похоже, что он всегда будет пытаться найти частичное совпадение, если нет точных совпадений, и к сожалению, это невозможно отключить.

Однако, если вы сделаете чек на "partial_match" : true в результирующем наборе, вы можете отфильтровать такие результаты в своем коде, который имеет отношение к ответу.

В сводке

Этот формат, кажется, дает результаты без "partial_match" : true если адрес является «хорошим»

https://maps.googleapis.com/maps/api/geocode/json?address=<address>&components=locality:London|country:UK 

И это позволит вам фильтровать ответ на "partial_match" : true в коде, чтобы исключить ложные результаты. Например, используя адрес «Манчестер»:

https://maps.googleapis.com/maps/api/geocode/json?address=Manchester&components=locality:London|country:UK