¿Hay alguna manera de desactivar la inercia de arrastre en Google Maps V3? Parece que debería ser una MapOption, pero no puedo encontrar ninguna forma de hacerlo.Deshabilitar arrastre de inercia/impulso en Google Maps V3
Respuesta
Esto no se puede hacer con Maps API V3 en este momento. Considerar la presentación de una solicitud de función aquí:
me encontré con este mismo problema hoy en día, con alguna costumbre de Div flotando sobre el mapa que necesita ser re-posicionada en Movimiento mapa. Mi reposicionamiento funcionó bien siempre y cuando el usuario llegó a una parada completa después de arrastrar antes de dejar el camino del ratón (por lo que no habría ningún momento), pero si se acaba de arrastrar de forma rápida y libera los divs terminarían un poco apagado.
Para solucionar esto, me he enganchado en el evento de arrastre y el evento de reposo:
var map = /* All the map config */
var stickyCenter = map.getCenter();
/* ... Code ... */
google.maps.event.addListener(map, 'drag', function(){ stickyCenter = map.getCenter(); });
google.maps.event.addListener(map, 'idle', function() { map.setCenter(stickyCenter); });
Lo que pasa es que después de que ha arrastrado por el mapa y ha llegado a una parada (después de que el impulso se hace) el mapa 'vuelve' a su lugar.
Si el chasquido es demasiado repentino, probablemente se podría desplazar o animar el movimiento de alguna manera. Espero que ayude, no es perfecto, pero es una manera de revertir el impulso de un evento de resistencia.
A partir de v3, puede enganchar en el evento 'center_changed' que tendrá en cuenta el tiempo entre los eventos' dragend' y 'inactivo'. https://developers.google.com/maps/documentation/javascript/events –
@DevinMcInnis Tienes razón. Esto también se discutió sobre el tema abierto en el código de Google aquí: https://code.google.com/p/gmaps-api-issues/issues/detail?id=3543&q=idle&colspec=ID%20Type%20Status%20Introduced% 20Fixed% 20Summary% 20Stars% 20ApiType% 20Internal Específicamente: "Este caso de uso puede ser resuelto mediante la adición de un oyente' 'idle' una vez al dragend' evento se dispara se desencadena el evento de inactividad una vez que el mapa se para.. Para colocar la superposición, use 'bounds_changed' o' center_changed' en lugar de 'drag'" – EdgeCaseBerg
Estoy bastante seguro de que es posible al menos contrarrestar el impulso. ¡Alguien por favor corrígeme si estoy equivocado! En aras de la simplicidad, por ejemplo, supongamos que el contenedor del mapa tiene un width
de 100vw
y un height
de 100vh
. Simplemente llame al getCenter()
en una función llamada por un evento mouseup
y luego use esas coordenadas para llamar inmediatamente al setCenter()
?
function initMap(){
...
var win = window;
google.maps.event.addDomListener(win, 'mouseup', setCoords);
function setCoords(){
var x = myMap.getCenter();
var lat = x.lat();
var lng = x.lng();
myMap.addListener('center_changed', function(lat, lng){
myMap.setCenter(new google.maps.LatLng(lat, lng));
};
};
El código anterior funciona realmente, pero el truco es que sólo funciona una vez hasta que se convierte en el navegador aparentemente sobrecargado y produce el error no detectada RangeError: El tamaño máximo de pila de llamadas superó.
No estoy seguro de qué hacer ahora.
Más información sobre este here.
El oyente center_changed establece el centro del mapa, que activa un evento center_changed, creando un ciclo infinito. – geocodezip
@geocodezip Gracias por responder. tienes razón. Me di cuenta de eso hace un momento. Lo curioso es que esperarías que funcionara perfectamente sin agregar 'myMap.addListener ...' pero no funciona. Funciona como si el código no existiera en absoluto. Por favor, echa un vistazo a mi otro hilo. http://stackoverflow.com/questions/39626454/functions-uncaught-rangeerror-maximum-call-stack-size-exceeded-with-google-m –
Utilice la opción indocumentado disablePanMomentum
ej .:
new google.maps.Map(document.getElementById(id), {
disablePanMomentum: true,
backgroundColor: 'none',
disableDefaultUI: true,
center: {
lat: 40.674,
lng: -73.945
},
zoom: 2,
...
Agradable. Estoy Curioso acerca de cómo lo encontraste. –
@PedroAdameVergara Amplia ingeniería inversa o algunas habilidades básicas de expresiones regulares. Haz tu elección. – Orwellophile
@Orwellophile podría explicar cómo ¿Usarías expresiones regulares para descubrir esto? Me encantaría saber, aplausos –
- 1. Google Maps V3: deshabilitar marcadores de lienzo
- 2. Google Maps V3: ¿Cómo deshabilitar "Street View"?
- 3. Confina el arrastre de Google Maps V3 Marker a Polyline
- 4. Arrastre (mueva) un polígono usando Google Maps v3
- 5. Google Maps v3 OverlayView.getProjection()
- 6. Google Maps API v3 BrowserIsCompatible
- 7. Google Maps v3 panTo Callback?
- 8. Google Maps API v2 vs Google Maps API v3?
- 9. marcador animoso en Google Maps v3
- 10. Quitar marcador en Google Maps Api v3
- 11. Google Maps v3 Iconos de dirección
- 12. GWT + API de Google Maps v3
- 13. Google Maps API v3: Administrador de dibujos
- 14. Google Maps API de JavaScript v3
- 15. Google Map Api v3 evento de arrastre en el mapa
- 16. Google Maps api V3 marcador de actualización
- 17. Google Maps API V3 Gray Áreas
- 18. google maps api v3 - streetview más cercano
- 19. google maps api v3 no hay etiquetas?
- 20. jQTouch/google maps tema API v3
- 21. Google maps api v3 iconos predeterminados?
- 22. Google Maps marcador V3 con la etiqueta
- 23. Google Maps v3 API - Autocompletar (dirección)
- 24. Google maps Límite municipal API v3
- 25. prueba google maps V3 geoubicación localmente?
- 26. Actualizar Marcador Posición Google Maps V3
- 27. Google Maps v3 InfoWindow Demasiado ancho
- 28. marcador google maps v3 mouseover tooltip
- 29. google maps v3 API mouseover con polígonos?
- 30. Google maps api v3 cursores estándar
supongo que esto es un problema conocido con ninguna solución? – pixelfreak