2010-03-22 17 views
5

Tengo una página que tiene un mapa con una ubicación inicial y otra final. Corro una ruta entre ellos para obtener la línea ingeniosa que muestra la ruta. Actualmente estoy usando Bing pero también lo he intentado con Google. Me gustaría saber en qué estados pasa esta ruta para poder luego superponer esos estados con información específica.¿Qué estados recorre mi ruta?

Cualquier sugerencia sobre cómo obtener esto sería muy apreciada.

Estoy usando los SDK de AJAX para Bing y Google. Manejando todas las cosas locales con js/jquery.

Respuesta

2

Puede usar una solicitud reverse geo-code en la API de Google Maps para determinar en qué estado se encuentra un punto en particular. Así que imagino que podría procesar su conjunto de puntos devueltos con la solicitud de instrucciones y extraer el estado de cada uno.

En la versión 2 del API, esto sería:

results.AddressDetails.AdministrativeArea.AdministrativeAreaName 

Creo que esto es un poco más intuitivo en v3. Puede examinar la matriz AddressComponents en los resultados para encontrar el tipo adecuado:

{ 
    "long_name":"California", 
    "short_name":"CA", 
    "types":["administrative_area_level_1","political"] 
} 

usted podría optimizar la geocodificación inversa mediante el uso de divide y vencerás en la matriz de posiciones de la ruta (si el estado es el mismo para el primera y posición intermedia, luego no haga geocodificación inversa en los puntos intermedios).

+0

Puede haber formas más eficientes de hacer esto (¿un servicio personalizado tal vez?) Y me gustaría ver alternativas. Pero esta fue mi primera reacción al problema. – RedBlueThing

+0

+1: La división y conquistar es una muy buena idea –

+0

@ daniel-vassallo Gracias Daniel. – RedBlueThing

0

Puede crear su propio servicio utilizando un shapefile y una biblioteca como SharpMap o una geodatabase como mysql spatial, sql server spatial, etc. Luego simplemente necesita ejecutar una consulta de intersección para descubrir en qué estados se ejecuta su ruta. Este enfoque podría funcionar para cualquier conjunto de polígonos, por lo que fácilmente se podría ampliar la solución a los condados, la votación del distrito, los distritos escolares, etc.

1

El servicio de indicaciones web MapQuest tiene una bandera stateBoundaryDisplay que pondrá explícitamente los cruces de frontera del estado (es decir " Cruzando a statename ") en la narrativa. Puede obtener fácilmente esa información de la respuesta json/xml con una búsqueda de texto de los pasos narrativos.

http://www.mapquestapi.com/directions/#advancedoptions

Espero que ayude.

Roman

Cuestiones relacionadas