2010-02-15 9 views
7

Tengo una base de datos que contiene pedidos y cada pedido tiene una ubicación asociada. Actualmente, cuando un usuario inicia sesión, estoy usando Bing Maps API para geocodificar cada ubicación de pedido y luego calcular la distancia de manejo para el usuario que ha iniciado sesión. En función de estas distancias, el usuario a través de un cuadro desplegable puede especificar las distancias máximas con los resultados que se muestran en una vista de cuadrícula. Sin embargo, con más de 100 pedidos, el proceso se vuelve extremadamente lento. Agradecería algunos consejos sobre la optimización de las consultas bing, posiblemente el almacenamiento en caché de los resultados (para que puedan ser reutilizados sin volver a procesar la API de Bing Maps) o la utilización de Ajax para procesar de alguna manera los pedidos. Gracias.Optimización de las solicitudes de geocodificación y RouteMapping de Bing Maps

Respuesta

1

Tengo la intención de hacer algo similar en un futuro muy cercano, así que tengo algunas sugerencias, pero ningún código real para compartir todavía. Espero que sea útil.

espero para almacenar la latitud/longitud para cada artículo en mi db (por lo que se geocodifique sólo una vez). Para seleccionar elementos dentro de una cierta distancia desde un punto, calcularé los números lat/lon que son 'x' millas norte/sur/este/oeste de mi punto central. Entonces, la selección se convierte en una simple cuestión de elegir registros donde los valores lat/lon caen entre los valores de mi cuadrado.

Y sí, sé que técnicamente debería utilizar un círculo de controlar con precisión la distancia, pero esto es mucho más fácil y más rápido. Si realmente necesita usar un círculo para un límite más preciso, primero use este método, luego use cálculos más complejos para eliminar los elementos fuera del círculo en las esquinas.

No estoy familiarizado con la concesión de licencias de Bing, pero si no recuerdo mal acerca de Google, es necesario tener una licencia pagada (comercial) para almacenar los resultados de geocodificación. Y no es barato. Entonces eso puede negar cualquier valor que mi sugerencia pueda haber tenido :(

Editar; Acabo de leer la pregunta con un poco más de cuidado, y veo que está hablando de conducir millas, no millas lineales. Entonces, mi respuesta no es t realmente aplicable, a menos que desee utilizarlo como una forma de reducir el número de cálculos de distancia de conducción que tiene que hacer.

Además, en materia de geocodificación y licencias, puede consultar geocoder.us que es bastante barato

0

Lo que probablemente quiera hacer es crear un árbol de expansión mínimo suponiendo que tiene la misma ubicación de destino para el usuario. El MST sigue siendo O (V^2), pero está efectivamente almacenando en caché muchos de los caminos más cortos ya que muchos de ellos reutilizarán los mismos caminos.

Otra opción es estimar distancias lineales usando por primera vez como un sustituto de millas de carretera, pero que todo depende de lo que va a enviar de vuelta al usuario.

¡Buena suerte!

+0

¿Cómo te ayudará un MST en las rutas más cortas? ¿Cómo decidir si puede ir a lo largo del MST y usar el 'caché' o no? – Karussell

Cuestiones relacionadas