У нас есть встроенная панель поиска на нашем сайте, которая использует API Карт Google для своих предложений и результаты. Когда пользователь ищет «Нью-Йорк» и специально щелкает по предложению, которое указывает на то, что они ищут штата Нью-Йорк это апи вызов сделан:При запросе API Карт Google я получаю идентичные результаты для «Нью-Йорк, США» и «Нью-Йорк, Нью-Йорк, Соединенные Штаты»
Когда они просто наберите в «Нью-Йорк» и нажмите клавишу ВВОД, или выбрать предложение, которое обозначает «Нью-Йорк, Нью-Йорк», этот апи сделан вызов:
Проблема заключается в том, что возвращаемый JSON идентичен между ними, за исключением обратного вызова заголовок:
{
"results" : [
{
"address_components" : [
{
"long_name" : "New York",
"short_name" : "New York",
"types" : [ "locality", "political" ]
},
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "New York, NY, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 40.9175771,
"lng" : -73.70027209999999
},
"southwest" : {
"lat" : 40.4773991,
"lng" : -74.25908989999999
}
},
"location" : {
"lat" : 40.7127837,
"lng" : -74.0059413
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 40.9152555,
"lng" : -73.70027209999999
},
"southwest" : {
"lat" : 40.4960439,
"lng" : -74.25573489999999
}
}
},
"place_id" : "ChIJOwg_06VPwokRYv534QaPC8g",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
Это приводит к неправильным результатам поиска, предоставленным нашим пользователям. В частности, мы отключаем поле "types"
. Поскольку оба документа указывают, что пользователь искал «местность», мы всегда возвращаем результаты для Нью-Йорка, а не штата Нью-Йорк, как могли быть указаны.
Это ошибка в API Карт Google? Нужно ли указывать некоторый флаг, чтобы заставить более строго интерпретировать то, что мы отправляем? Другие идеи?
Обратите внимание, что если вы выполните этот поиск у пользователя, обратившись на www.google.com/maps, вы получите штат штата Нью-Йорк, а не Нью-Йорк. Я не знаю достаточно о том, как эта страница отличается от API, чтобы знать, что там происходит.
Просьба указать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), который позволяет воспроизвести проблему. Как вы получаете эти результаты? Какую версию API вы используете? Я не получаю таких же результатов. – MrUpsidown
@MrUpsidown Я предположил, что мои ссылки действительно способ воспроизвести проблему. Мы используем версию API на maps.googleapis.com/maps-api-v3/api/js/27/12/. Кроме того, вы можете попробовать любое состояние, отличное от штата Нью-Йорк, в документации по API API Google: https://developers.google.com/maps/documentation/geocoding/intro, и вы увидите состояние. Если вы наберете «Нью-Йорк» или «Нью-Йорк», вы вернете город, а не государство. – Necoras