Могу ли я заставить геокодер Google сообщать мне, когда местоположение не может быть найдено, вместо того, чтобы просто выбирать центр города? - PullRequest
3 голосов
/ 29 августа 2009

Я работаю с API карт Google и тестирую раздел, который геокодирует все адреса в базе данных, которые не имеют координат, а затем создает отчет о том, какие из них были успешными, а какие - нет.

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

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

The coordinates of 1337 Rawrmander Rd.
Were successfully set to:
    latitude:   49.170171
    longtitude: -123.136579

The coordinates of 5678 Imaginary Lane
Were successfully set to:
    latitude:   49.170171
    longtitude: -123.136579

Он просто вернул центр города (и продолжает делать это независимо от того, какой это адрес) вместо того, чтобы называть его неизвестным адресом.

Вот как я называю геокодер:

//in a for loop
setTimeout( "geocoder.getLocations(\"" +
    //address to send to google
    values[i]['house'] + " " +
    values[i]['street'] + " " +
    values[i]['streetType'] + ", " +
    "Richmond, BC, Canada\", " +
    //google returns to this function asynchronously
    "function(reply) { handleReply(processItem++, reply); } );"
    , 
    callTimeout);
callTimeout += 220;

Я попытался изменить "Richmond, BC, Canada" на "Richmond" в надежде, что он не будет знать, какой город выбрать, а затем вернет неизвестный адрес, но вместо этого он просто выбрал центр Ричмонда, Вирджиния.

Кто-нибудь знает способ "намекнуть" на Google, чтобы дать мне неизвестный адрес, вместо того, чтобы просто что-то выбрать?

Ответы [ 3 ]

4 голосов
/ 29 августа 2009

Я думаю, что вы ищете Значение точности . Когда вы запускаете геокод, посмотрите на значение точности, которое возвращается. Или мы говорим о разных вещах?

Например: Используя предоставленный вами адрес ( 5678 Воображаемый переулок ), я получаю следующее:

200,4,44.9774820,-93.2643510

против использования реального адреса ( 701 1st Ave N ) результат:

200,8,44.9782860,-93.2760830

Обратите внимание на второе значение (4 = TownLevel против 8 = AddressLevel). Ищу Воображаемый, MN Я могу снизить точность до 2 = RegionLevel. Мне удалось получить ответ 602 = G_GEO_UNKNOWN_ADDRESS (точность 0 = Неизвестно), когда я искал Воображаемый, XX .

602,0,0,0
1 голос
/ 29 августа 2009

Проверьте координаты имеющегося у вас адреса, например: "1234 Imaginary St, Vancouver", а затем проверьте координаты только города: "Vancouver". Если они одинаковые, есть проблема. Если они не живут прямо в центре города, это было бы хорошим признаком того, что адрес не работает.

0 голосов
/ 29 августа 2009

Геокодер вернет код состояния 602, когда он действительно не сможет найти местоположение. Чаще всего, хотя - он просто сделает снимок в темноте и даст вам результат. Значение точности не скажет вам, что вы только что получили выстрел в темноте. Он только сообщает вам, является ли ваш результат страной, городом, адресом и т. Д. К сожалению, кажется, что нет никакого способа обойти это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...