2009-04-30 19 views
5

Ustedes han estado ayudando a resolver algunos de mis problemas con un mapa de Google últimamente, y gracias por eso.Ajustar a la calle más cercana

Ya casi termino con esto, solo queda un problema. Cuando coloco el primer marcador en el mapa, se ajusta a la calle más cercana (¡lo cual está bien!) Pero cuando arrastro el primer marcador a otro lugar, las direcciones se estropean de repente. Y los marcadores obtienen mezclas.

se puede ver un ejemplo en http://dev.korebogen.dk/gmap/

que necesito para que sea posible mover el primer marcador (todavía romperse) y cuando coloco el segundo marcador, las direcciones primera carga. Pero para volver a hacer el primer marcador, tengo que cargar las instrucciones.

Espero que algunos de ustedes tengan una solución. Gracias por adelantado.

Respuesta

5

Blackpool Community Church Javascript Team tiene un código excellent example of exactly this (direct link to the fourth example). Echa un vistazo a sus otros ejemplos también.

(exención de responsabilidad: No estoy afiliado con ellos, pero he aprendido mucho sobre GMaps de sus ejemplos)

Editar: que sospechan que el fuego eventos del mapa de algo como esto (pseudocódigo, para los nombres de eventos reales, etc. . comprobar los documentos GMaps):

  • mapa clic: mousedown, mouseup, haga clic en: {set marcador rojo}
  • arrastre marcador rojo: mousedown, dragstart {marcador rojo}, mouseup, clic: {marcador de conjunto b} (mousedown + mouseup), dragend
  • ambos marcadores están configurados? Sí, obtenga instrucciones

Lo que sugeriría: en el marcador rojo y las funciones de marcador-A dragstart, establezca un indicador que "arrastra un marcador", reinícielo en la función dragend; en la función Establecer marcador B, solo establece el marcador si actualmente NO estamos arrastrando algo (el indicador no está establecido).

+0

Los he comprobado e incorporado algo de su código en mi ejemplo, pero no está funcionando según lo previsto. No tengo idea de qué he hecho mal. –

+0

Intentaré algo nuevo con el cuarto ejemplo, 2 segundos. :) –

+0

No puedo hacer que funcione según lo previsto. ¿Es posible que cocines algo que funcione con mi código? –

2

El código que le di anteriormente escuchó los primeros dos clics y agregó un marcador para cada uno. El problema es que cuando arrastra el primer marcador, vuelve a llamar al evento "clic" y, por lo tanto, agrega otro marcador en la misma ubicación.

Afortunadamente, el click event le permite saber si se hizo clic en una superposición. Así que solo ejecute el código que agrega un nuevo marcador si la superposición es nula. Tenga en cuenta que la superposición no es un booleano.

var listener = GEvent.addListener(map, "click", function(overlay, latlng) { 
    if (overlay == null) { 
    // code to add new marker 
    } 
}); 
+0

Incorporé su código anterior en mi ejemplo (podría necesitar una actualización). Y funciona: puedo arrastrar el primer marcador sin estropearlo. Pero necesito el primer marcador para ir a la carretera más cercana (hacer clic y arrastrar), así que puedo evitar trazar el marcador en un campo, por ejemplo. Aparentemente no soy muy bueno en Google Maps API o Javascript para hacer que esto funcione. Aprecio tu ayuda. –

Cuestiones relacionadas