2013-10-27 4 views
2

У меня очень сложная проблема с картами: при поиске на maps.google.com для 'rue du sapin, la marsa, tunisie' он находит и работает как и ожидалось.Результат maps.googleapis отличается от maps.google.com

Теперь я использую Апи и я настроил его таким образом

private static final String MAPS_REQUEST_URL = "http://maps.googleapis.com/maps/api/geocode/json?sensor=false&language=FR&components=country:TN&address="; 

Когда я прошу этот адрес с «Рю дю Sapin, La Marsa, Tunisie» она возвращает Рю дю Sapin, Карфаген , Tunisie

Я пытался играть с регионом, языком, параметрами стран, но ничего не делает его работу: швы Google переводит La Marsa в cartahago (в I вечная версия: это географически как-то правильно, так как la marsa находится около carthago.

Но никто в Тунисе не будет вызывать La Marsa: Карфаген это не чувство.

Итак, вопрос в том, почему веб-клиент использует хорошие термины, а Api - нет?


Проверка с помощью хромированного разработчика (на вкладке сети), у меня есть этот запрос, который выполняется. Я не знаю, как перевести его на URL другого API,

curl 'https://maps.google.com/maps/suggest?q=rue+du+sapin,+la+mars&cp=21&hl=en&gl=&v=2&clid=1&json=a&ll=34.768691,10.008545&spn=5.955003,16.907959&vpsrc=6&authuser=0&auth=526fd0392GzY4pXSd2dS4DPzdNUGxkJ-kLI&src=1,2&num=5&numps=2&callback=_xdc_._1fhndbld0j' -H ':host: maps.google.com' -H 'accept-encoding: gzip,deflate,sdch' -H 'accept-language: en-US,en;q=0.8,fr;q=0.6,cs;q=0.4,it;q=0.2,ar;q=0.2' -H 'user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36' -H ':path: /maps/suggest?q=rue+du+sapin,+la+mars&cp=21&hl=en&gl=&v=2&clid=1&json=a&ll=34.768691,10.008545&spn=5.955003,16.907959&vpsrc=6&authuser=0&auth=526fd0392GzY4pXSd2dS4DPzdNUGxkJ-kLI&src=1,2&num=5&numps=2&callback=_xdc_._1fhndbld0j' -H 'accept: */*' -H ':version: HTTP/1.1' -H 'referer: https://maps.google.com/' -H 'cookie: SS=(...)' -H ':scheme: https' -H 'x-chrome-variations: CIO2yQEIhrbJAQiltskBCKm2yQEIxLbJAQiehsoBCNeHygEIlorKAQ==' -H ':method: GET' --compressed 

швы этот ответ связан с моей проблемой (даже издалека) Google Map APIs : UK specific results


Спасибо за каждый ответ

+0

Когда я ищу ['rue du sapin, la marsa, tunisie' на Картах Google] (https://maps.google.com/maps?q=rue+du+sapin,+la+marsa,+tunisie), это дает мне «Rue du Sapin Carthago, Tunisia» – geocodezip

+0

Возможно, вы не в Тунисе, поэтому он отвечает на вас, поскольку API отвечает мне. Это показатель проблемы (который я уже знал: в зависимости от того, где вы находитесь, у вас будет другой ответ). Проблема в том, что я хочу получить ответ, как у меня в браузере (они позаботились об этом в браузере, но я не могу найти способ получить его из API) –

+0

@geocodezip, пожалуйста, обратите внимание, что он перевел Тунис на Тунис, когда вы набрали: так хорошо, когда вы находитесь за пределами Туниса, вы получаете ответ с Карфаго. Когда вы находитесь внутри (я не знаю, какой параметр изменяется, но) вы получаете «la Marsa» –

ответ

1

Вы можете заменить Карфаген Ла Марсой. Или притвориться, что Google Maps дает правильный геокод. Скорее всего, геокод из Google Maps api верен, и вы это недооцениваете ?! Чтобы повысить точность, вы можете искать геокод для разных имен: Google Maps API: Geocode returns different co-ordinates then Google maps, но, скорее всего, он использует разные базы данных: Google Maps Web site and API : different results. Существует также название и адрес: Google Map geocoder not as accurate as a Google maps. Как разобрать геокод: how to parse a Google Maps geocoding result.

+0

«la marsa» - это всего лишь пример, есть, конечно, другие, чтобы обнаружить –

+0

Нет @Phpdna, ответ ясен. Это просто не дает ответа: вы можете увидеть, что http://maps.google.com/maps/suggest?q=rue+du+sapin,+la+marsa&cp=21&hl=en дает хороший ответ, а другой не делает. Недостатком является то, что вы предлагаете решение, которое работает только для «La Marsa», что, очевидно, не является решением моей проблемы, иначе я бы не использовал всю эту сложность вызова удаленных API: я бы написано «La Marsa» в коде напрямую. Извините, но этот ответ определенно влияет на качество потока. Я бы не отказался нигде иначе –

3

http://maps.googleapis.com/maps/api/geocode/json?sensor=true&language=EN&address=rue%20du%20sapin,%20la%20marsa (примечание сенсор, язык и ничего, кроме адреса) создает набор результатов, содержащий все данные, «La Marsa Soukra» тоже.

Одно из решений будет производить ваши собственные formatted_address от компонентов, которые вы получаете.

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

~ детали сразу после ответа

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Rue du Sapin", 
       "short_name" : "Rue du Sapin", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Carthago", 
       "short_name" : "Carthago", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "La Marsa Soukra", 
       "short_name" : "La Marsa Soukra", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "Tunis", 
       "short_name" : "Tunis", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "Tunisia", 
       "short_name" : "TN", 
       "types" : [ "country", "political" ] 
      } 
     ], 
     "formatted_address" : "Rue du Sapin, Carthago, Tunisia", 
     "geometry" : { 
      ... 
     }, 
     "partial_match" : true, 
     "types" : [ "route" ] 
     } 
    ], 
    "status" : "OK" 
} 

Я думаю, что

При загрузке с maps.googleapis.com, текущая реализация API Карт v3 не зависит от обмена файлами cookie с Google.

ногами здесь как-то ... или просто предпочтение отдается компоненту местности над administrative_area_level_2 ... а матч только частично с уверенностью: 0.51319576424371627?

maps.google.com/maps/suggest не является чем-то, что кто-либо должен использовать (API даже не документирован должным образом, устарел v2 используется maps.google.com/maps/geo) и использовать некоторые из них более или менее личные данные Google.

Я играл с ф параметра в

http://maps.google.com/maps/suggest?q=rue+du+sapin,+la+marsa&cp=21&hl=en

и 20 производится довольно интересные результаты.

+0

Спасибо arkonautom за ваше расследование, Теперь я не знаю, могу ли я использовать maps.google.com/maps/suggest Если он может быть изменен без уведомления, я не может найти документацию Google об этом. Soooo Да! :-) Как вы сказали, это не то, что нужно использовать в серьезном проекте. Я даже не знаю, сколько запросов я могу сделать на этом, не будучи уволенным :). Кажется, нет реального решения? ... –

+0

https://developers.google.com/places/documentation/autocomplete может быть альтернативой, но это намного менее актуально в моем случае использования, и не уверен, что не будет той же проблемы –

+0

Почему Geocoders API Карт Google предоставляют разные местоположения, чем Google Maps? Геокодер API и геокодер Google Maps иногда используют разные наборы данных (в зависимости от страны). Геокодер API иногда обновляется новыми данными, поэтому вы можете ожидать, что результаты со временем меняются или улучшаются. – arkonautom

Смежные вопросы