User:NicolasDumoulin/MyOSM

From OpenStreetMap Wiki
Jump to navigation Jump to search

Notes pour le développement de l'application MyOSM Autres noms envisagés : MyLayers, EasyLayers, …

Objectif : pouvoir créer facilement le code html/javascript pour afficher des données sur une carte OSM.

L'idée est de sauvegarder la configuration de la carte de l'utilisateur dans un fichier (json à priori) décrivant les couches, les styles et les ressources utilisées (icônes).

2 scénarios envisagés :

  • Une interface en ligne permet à l'utilisateur de personnaliser sa carte et au final peut télécharger les fichiers à placer chez lui ou le code à insérer dans sa page
  • L'utilisateur télécharge une page, l'installe chez lui et lance la page depuis son site. Il configure alors sa carte et n'a plus qu'à télécharger le fichier de configuration et le mettre à jour sur son site. L'avantage de cette solution est de pouvoir spécifier des icônes présentes sur le site avec une URL relative (ce qui ne fonctionnerait pas à la première solution, à moins que l'utilisateur téléverse auparavant les images, ce qui n'est pas prévu)

Prototype en cours de développement

Prototype d'éditeur en ligne qui permet de construire sa carte puis de la sauvegarder dans un fichier html autonome (openlayers minifié est copié dedans). Il reste encore du travail, notament pour l'édition de style et l'édition des données vectorielles.

Format de stockage

Voir l'exemple en ligne et la carte chargée à partir de cette configuration.

Les attributs en gras sont considérés comme obligatoires.

Voici la structure de données de stockage d'une carte :

  • position
    • lon
    • lat
    • zoom
    • geolocation (par défaut : true)
  • controls : Array (non utilisé pour l'instant)
  • kinetic (par défaut : true)
  • baseLayers : Array de layers (voir ci-dessous)
  • overlayLayers : Array de layers

Structure de donnée d'une couche (layer) :

  • name
  • type : parmi "OSM" (tuiles), "geojson", "gpx" et "osm" (format XML des données OSM)
  • attribution
  • url
  • xapiBbox (par défaut : false) à activer pour une couche "osm" donnant une URL de requête overpass/XAPI pour que les données soient raffraîchies au fur et à mesure du glissement de la carte.
  • visibility (par défaut : false) actif seulement pour les couches overlays
  • zoomToExtent (par défaut : false) actif seulement pour les couches non tuilées (non "OSM")
  • projection actif seulement pour les couches non tuilées (non "OSM"), EPSG:4326 par défaut pour les couches de données "osm"
  • data données brutes, actif seulement pour les couches non tuilées (non "OSM")
  • style actif seulement pour les couches non tuilées (non "OSM")
    • default : object décrivant le style avec les mêmes propriétés qu'Openlayers
    • selected
    • popup : Contenu de la popup sur un objet. Les variables de l'objets peuvent être accéder entre double-accolades. Les variables par défaut dans chaque objet OSM (XAPI/Overpass) : {{osm_id}}, {{osmlink}}. Un fonction javascript peut être fourni pour générer du contenu plus riche, avec la syntaxe "run://nomdelafonction()" (on peut bien sûr passer en argument des variables "fonction({{osm_id}})")

Fonctionnalités

  • charge une carte depuis une configuration au format décrit ci-dessus
  • sauvegarde une carte dans un fichier html autonome (contient tout le javascript) pour un déploiement simplifié
  • liste de serveurs de tuiles prédéfinis lors de l'ajout d'une couche OSM
  • éditeur de style des données vectorielles (TODO reste le choix de l'icône)
  • TODO éditeur de données vectorielles
  • TODO affiche d'une liste des données avec leur description (contenu de la popup)
  • TODO déposer un gpx sur la carte importe les données et crée une couche vectorielle
  • TODO ajouter de quoi rendre la liste des boîtes plus gérables : ascenseur, bouton pour tout replier
  • TODO faire un portail qui permette de sauvegarder et publier en ligne ses cartes