uMap et Android ?

Bonjour,


Je souhaite utiliser uMap sur un petit Android et j’aimerai savoir si il existe une solution, même partielle, qui permettrait d’afficher une carte sur une application.

J’ai fait un essai avec plusieurs navigateurs et le déplacement ou le double-tap est souvent confondu, l’utilisation n’est pas facile. L’idéal est qu’une application gère l’affichage via une API ou autre solution du genre. Est ce que cela existe ?

Bonjour,

Pour une application native utilisable en mode hors ligne, peut-être regarder du coté de la librairie mapsforge qui est utilisée par des applications très riches fonctionnellement comme Locus Map?

Sinon, utilisation d’un composant WebView qui permet a priori de se mettre en coupure des actions de l’utilisateur.

Ce serait pour une utilisation en ligne uniquement. J’ai une carte avec plus de 200 marqueur que je souhaite partager avec plusieurs personne. Est ce que depuis uMap peut on exporter un GPX vers LocusMap ?

L’idéal serait d’utiliser uMap sur Android pour profiter de l’interface et du regroupement de marqueur en fonction du zoom. C’est très agréable comme fonctionnalité.

Le format d’exportation utilisé est GeoJSON qui n’est pas encore supporté par Locus.

Oui je suis en train de chercher comment convertir un fichier JSON en GPX. Peut être qu’un outil en ligne existe ? Pour l’instant mes recherches ne sont pas du tout fructueuse.

Voir le site newconverter.mygeodata.eu. Le format GPX convient bien pour les points et les lignes. Pour les polygones, il vaut mieux choisir un format comme KML.

Merci je vais faire quelques test. Pour l’instant le site répond très très lentement.


Existe il un module permettant à uMap d’exporter directement en GPX ou KML ?

Apparemment non. A proposer par quelqu’un connaissant Django en utilisant la base suivante

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# geojson2gpx.py <input_file.geojson> <output_file.gpx>
#
# Author: GarenKreiz
# Note   : polygons are transformed to a closed line
#

import json
import sys

gpxHeader = """
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<gpx version="1.1" creator="geojson2gpx"
 xmlns="http://www.topografix.com/GPX/1/1"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
 xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3"
 xmlns:gpxtrkx="http://www.garmin.com/xmlschemas/TrackStatsExtension/v1"
 xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1"
 xmlns:locus="http://www.locusmap.eu">
"""
gpxTrailer = """
</gpx>
"""

debug = False

fIn = open(sys.argv[1],'r')
geojson = json.loads(fIn.read())
fIn.close()

fOut = open(sys.argv[2],'w')
fOut.write(gpxHeader)
 
for feature in geojson['features']:
    if debug:
        print feature.keys()
        print 'geometry:       ', feature['geometry'].keys()
        print 'geometry type:  ', feature['geometry']['type']
        print 'geometry coords:', feature['geometry']['coordinates']
        print 'type:           ', feature['type']
        print 'properties:     ', feature['properties']
        print 'name:           ', feature['properties']['name']
        print ""
    type = feature['geometry']['type']
    name = feature['properties']['name']
    if type == 'Point':
        [lon,lat] = feature['geometry']['coordinates']
        fOut.write('<wpt lat="%f" lon="%f"><name><![CDATA[%s]]></name></wpt>\n' % (lat,lon,name) )
    elif type == 'Polygon':
        fOut.write('<trk><name><![CDATA[%s]]></name></wpt>\n' % name )
        for segment in feature['geometry']['coordinates']:
            fOut.write('<trkseg>\n')
            for [lon,lat] in segment:
                fOut.write('<trkpt lat="%s" lon="%f"></trkpt>\n' % (lat, lon) )
            fOut.write('</trkseg>\n')
        fOut.write('</trk>\n')
    elif type == 'LineString':
        fOut.write('<trk><name><![CDATA[%s]]></name></wpt>\n' % name )
        fOut.write('<trkseg>\n')
        for [lon,lat] in feature['geometry']['coordinates']:
                fOut.write('<trkpt lat="%s" lon="%f"></trkpt>\n' % (lat, lon) )
        fOut.write('</trkseg>\n')
        fOut.write('</trk>\n')
    else:
        print 'Type not supported:', type
       
fOut.write(gpxTrailer)
fOut.close()

Cool, je vais voir où contacter les devellopeur de uMap. Peut être que ça peut les intéresser ?

Pour info, il est possible depuis aujourd’hui de downloader les données en GPX et KML. :slight_smile:
Support basique pour le moment.

Excellent, je viens de tester avec l’application “Locus Free” ça fonctionne parfaitement autant en GPX qu’en KML.

Peut être que le nom du fichier exporté peut reprendre le titre de la carte ? ça peut aider lors d’exportation de plusieurs carte

Peut être que le nom du fichier exporté peut reprendre le titre de la carte ?

Oui, bonne idée, je vais faire ça. :slight_smile:

Belle réactivité, merci!