3 votos

Mejorar el intervalo de localización de los folletos

Estoy usando leaflet 1.0.3 con el último plugin leaflet-locatecontrol. Cuando empiezo a localizarme, tarda unos 5 segundos. Mi posición está siendo observada constantemente e incluso si me muevo justo después de la última actualización de la posición, tarda 5 segundos de nuevo en reposicionar mi mapa. He intentado utilizar parámetros como timeout o maximumAge, pero no tienen ningún efecto. He buscado algún número en leaflet.js para sustituirlos por valores más bajos, pero tampoco ha servido de nada.

Un intervalo de actualización de la posición de 500ms sería genial para mi aplicación. Por lo que he leído, Leaflet utiliza la API del navegador para procesar las geolocalizaciones. Pero he conseguido localizarme en OpenLayers con mi intervalo de actualización deseado. ¿Hay alguna manera de hackear el intervalo de actualización de Leaflet?

var lc = L.control.locate({
        position: 'topright',
        strings: {
            enableHighAccuracy: true, 
            setView: true,              //no effect
            keepCurrentZoomLevel: true, //no effect
            watch:false,                //no effect
            timeout: 1000,              //no effect
            maximumAge: 1000            //no effect

        }
    }).addTo(map)

4voto

IvanSanchez Puntos 491

Leaflet se basa en el navegador Geolocation.watchPosition y otras partes del Geolocation API . El código para L.Map.locate no añade tiempos de espera ni retrasos adicionales.

Permítanme citar el especificaciones del Geolocation API El énfasis es mío:

En el paso 5.2.2 del proceso de vigilancia, el successCallback sólo se invoca cuando se obtiene una nueva posición y ésta difiere significativamente de la posición comunicada anteriormente. La definición de lo que constituye una diferencia significativa se deja a la aplicación. Además, en los pasos 5.2.2 y 5.2.3, Las implementaciones pueden imponer limitaciones a la frecuencia de las devoluciones de llamada para evitar consumir inadvertidamente una cantidad desproporcionada de recursos.

En otras palabras: el navegador web limita la velocidad a la que proporciona actualizaciones de ubicación (a Leaflet, o a su propio código si utiliza el Geolocation API directamente). Y no hay nada que puedas hacer al respecto (a menos que estés dispuesto a crear tu propio navegador web).

0 votos

¿y si utilizara getCurrentPosition en lugar de watchPosition en una función setInterval y al hacerlo forzara una actualización de la ubicación?

0 votos

Además: ¿existe alguna otra api de uso libre que permita una mayor frecuencia y no dependa de la api del navegador?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X