4 votos

Aplicación offline Phonegap/Openlayers

Tengo una aplicación móvil que utiliza Phonegap con OpenLayers y Geoserver. Ahora, necesito que la aplicación esté disponible completamente fuera de línea. La cantidad de puntos de datos puede ser muy grande dependiendo del cliente que se cargue en la aplicación, y cada punto tiene propiedades relacionadas. Por lo tanto, tengo que ser capaz de tirar de los datos hasta el teléfono cuando está en línea y luego utilizar los datos locales cuando está fuera de línea. Me gusta la velocidad de GeoJSON y me gustaría utilizarlo si es posible. He creado un archivo GeoJSON que se carga en el mapa como quiero. Ahora, tengo que guardar las ediciones/movimientos en el archivo GeoJSON y estoy atascado. Usar una estrategia de guardado no funciona y por lo que he leído parece que tengo que tener un script de servidor para que funcione.

¿Cómo puedo guardar las modificaciones en mi archivo GeoJSON?

¿O estoy haciendo todo esto mal y necesito usar algo más para los datos fuera de línea con OpenLayers?

0 votos

Creo que el mayor problema es que PhoneGap necesitará algún tipo de servidor con el que hablar. El OpenLayers que se ejecuta en phonegap estará solicitando azulejos de un servidor a través de http. Puede haber algún truco para conseguir un pequeño servidor web que se ejecute junto con phonegap en el dispositivo, pero no estoy seguro. Ese es el mayor problema. Una vez que usted tiene ese servidor en su lugar, su cliente javascript puede hablar con él para hacer esas ediciones (y, posiblemente, para servir a sus puntos al cliente en el primer lugar). Una vez resuelto ese problema estructural, diferentes formatos de archivo (geojson, etc.) podrían funcionar para almacenar los datos.

0 votos

Por no hablar de que, incluso si consigues que el servidor funcione localmente, ¿de dónde obtiene los mosaicos? ¿Tienes un almacén de todos los mosaicos del mapa base que necesitarás?

0 votos

No voy a usar mosaicos para los puntos de datos - he puesto toda la información de los puntos en un archivo geojson y lo estoy mostrando en una capa vectorial. Todavía no he llegado a las capas de base, pero espero utilizar mrsid o geotiffs para ello. En este momento mi obstáculo es guardar las ediciones en mi archivo geojson o utilizar otro método de almacenamiento y manipulación de los datos localmente si hay uno mejor.

1voto

Dan H Puntos 21

Le sugiero que eche un vistazo a la muestra de ArcGIS Javascript Offline Editing.

https://github.com/Esri/offline-editor-js

http://video.esri.com/watch/3371/offline-editing-with-javascript

Aunque utiliza diferentes formatos y tecnologías de almacenamiento de datos, algunas ideas principales podrían ser útiles o servir de inspiración para su aplicación.

Así que la idea principal es - en lugar de cambiar el archivo de datos original, almacenar los cambios como Inserts/Updates/Deletes en otra ubicación. Esto facilitaría la parte de edición, pero de alguna manera complicaría la parte de renderización del mapa, ya que se necesita incluir las partes cambiadas en los datos principales, cuando se renderiza.

0voto

naknode Puntos 143

Hum para las ediciones se necesita un soporte de servidor para recibir las solicitudes de sus clientes. Lamentablemente no sé cómo hacerlo con Geoserver.

Si quiere aventurarse con nodejs Si no se puede, se puede hacer una aplicación de javascript fácil que puede actualizar su archivo fácilmente. ¡Es un lenguaje de programación basado en JavaScript por lo que podría manipular archivos JSON muy rápidamente!

También puedes ver los controles disponibles para la edición y en ejemplos en el sitio de openlayers.

0 votos

Me interesaría utilizar node.js, pero creía que sólo estaba en un servidor.

0 votos

Podrías utilizar pouchdb (pouchdb.com) para la aplicación offline y couchdb (con o sin geocouch) en el servidor. Para los tiles offline puedes usar mbtiles

0voto

Tom Smith Puntos 1069

Recomiendo preprocesar todos los datos para utilizarlos sin conexión. Generar baldosas vectoriales MBTILES que openlayers soporta de forma nativa sólo tiene que añadir la lectura de mbtiles directamente a través de un plugin o MBTILES.js. Utilice las vacaciones para el preprocesamiento o geoserver con geowebcache o directamente.desde el último postgis. Los mosaicos vectoriales tendrán los atributos que tengan tus datos pero sólo incluirán lo que necesites para una etiqueta o callput. Para reducir el tamaño de los datos. Tippecanoe le permite escalar sus datos para que se muestren en diferentes niveles de zoom, necesita usar la extensión tippecanoe geojs on. https://github.com/mapbox/tippecanoe . Aquí está el ejemplo usando MBTILES sqlite con openlayers http://bl.ocks.org/tormi/raw/7699272/75ad7a225f4774fe6bbb864f4df892a9e1702d69/

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