Estoy trabajando con la API de Google Maps y probando una sección que geocodifica todas las direcciones en una base de datos que no tienen coordenadas, luego genera un informe de cuáles fueron exitosas y cuáles fallaron.

Si no se puede encontrar alguna de las ubicaciones, debe colocar un formulario en la parte superior de la página para permitir al usuario modificar la dirección o especificar coordenadas.

Sé que el geocodificador puede devolver mi código con el código de estado G_GEO_UNKNOWN_ADDRESS, pero nunca lo usa. Puse direcciones falsas en la base de datos y obtuve esto:

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

Simplemente devolvió el centro de la ciudad (y continúa haciéndolo sin importar cuál sea la dirección) en lugar de llamarlo una dirección desconocida.

Así es como llamo al geocodificador:

//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;

Intenté cambiar "Richmond, BC, Canada" a solo "Richmond" con la esperanza de que no supiera qué ciudad elegir y luego devolver una dirección desconocida, sino que simplemente eligió el centro de Richmond, VA.

¿Alguien sabe una manera de "insinuar" en google para darme una dirección desconocida en lugar de simplemente elegir algo?

3
Carson Myers 29 ago. 2009 a las 06:25

3 respuestas

La mejor respuesta

Creo que lo que está buscando es el Valor de precisión. Cuando ejecute un geocódigo, observe el valor de precisión que regresa. ¿O estamos hablando de cosas diferentes?

Por ejemplo: Con la dirección que proporcione (5678 Imaginary Lane) obtengo lo siguiente:

200,4,44.9774820,-93.2643510

Versus usar una dirección real (701 1st Ave N) el resultado es:

200,8,44.9782860,-93.2760830

Tenga en cuenta el segundo valor allí (4 = TownLevel vs 8 = AddressLevel). Buscando Imaginario, MN Puedo reducir la precisión a 2 = RegionLevel. Pude obtener una respuesta 602 = G_GEO_UNKNOWN_ADDRESS (precisión de 0 = Desconocido) cuando busqué Imaginary, XX.

602,0,0,0
4
dustmachine 29 ago. 2009 a las 03:18

El Geocoder devolverá el código de estado de 602 cuando realmente no puede encontrar una ubicación. Sin embargo, la mayoría de las veces, solo tomará una foto en la oscuridad y le dará un resultado. El valor de precisión no le dirá que acaba de recibir un disparo en la oscuridad. Solo le dice si su resultado es un país, ciudad, dirección, etc. Desafortunadamente, no parece haber una forma de evitarlo.

0
Chris B 29 ago. 2009 a las 03:42

Verifique las coordenadas de la dirección que tiene a mano, por ejemplo: "1234 Imaginary St, Vancouver" y luego verifique las coordenadas de la ciudad: "Vancouver". Si son lo mismo, hay un problema. A menos que vivan en el centro de la ciudad, sería una buena indicación de que la dirección no funciona.

1
nickf 29 ago. 2009 a las 02:47