Giter Site home page Giter Site logo

ignf / geoportal-extensions Goto Github PK

View Code? Open in Web Editor NEW
64.0 15.0 33.0 1.35 GB

French Geoportal Extensions for well-known javascript mapping libraries (Leaflet and OpenLayers)

Home Page: https://ignf.github.io/geoportal-extensions/

License: Other

CSS 3.83% JavaScript 77.76% HTML 17.31% Shell 0.23% PHP 0.19% Less 0.20% Handlebars 0.47% EJS 0.01%
openlayers leaflet itowns geoportal-extensions geoportail 3d

geoportal-extensions's Introduction

Extensions Géoplateforme

image


Build CeCILL License DeepScan grade

Ce projet a pour but de fournir des extensions facilitant l'accès aux ressources de la Géoplateforme pour les bibliothèques cartographiques Leaflet, OpenLayers (versions 3 et supérieures) et iTowns.

Ces extensions proposent des classes et widgets utilisables en complément de la bibliothèque cartographique qu'elles étendent, permettant notamment :

  • d'afficher simplement les couches WMTS et WMS délivrées par la Géoplateforme ;

  • d'intégrer un widget de gestion d'empilement des couches ;

  • d'intégrer une barre de recherche utilisant le service de géocodage IGN ;

  • de faire des calculs d'itinéraires à partir du service de la Géoplateforme ;

  • de faire des calculs d'isochrones / isodistances à partir du service de la Géoplateforme ;

  • d'afficher l'altitude en un point de la carte à l'aide du service d'altimétrie de la Géoplateforme.

  • ...

LEAFLET

Voir le détail des fonctionnalités proposées par l'extension Géoplateforme pour Leaflet

OPENLAYERS

Voir le détail des fonctionnalités proposées par l'extension Géoplateforme pour OpenLayers

ITOWNS

Voir le détail des fonctionnalités proposées par l'extension Géoplateforme pour iTowns

geoportal-extensions's People

Contributors

azarz avatar elias75015 avatar gcebelieu avatar lboulanger avatar lowzonenose avatar ojathelonius avatar pjjmunier avatar pprev94 avatar rupertbarrow avatar sylvainpolletvillard avatar thomasg77 avatar vcoindet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geoportal-extensions's Issues

ol.control.LayerImport : "epsg:3857" devrait permettre de reconnaître "EPSG:3857"

Dans le widget d'import de couches (Ol3), dans le cas d'un import de couche WMS ou WMTS, le widget effectue une requête GetCapabilities sur le service, et n'affiche que les couches dont la projection est connue par la carte, afin qu'elles puissent être affichées ou reprojetées.

Or dans le cas où la projection est renseignée en minuscules, par exemple "epsg:3857", la méthode ol.proj.get("epsg:3857") ne permet pas de reconnaître la projection, alors que "EPSG:3857" est bien définie par défaut.

Solution: ajouter un test supplémentaire avec la projection en majuscules.

Compatibilité IE10 : css des widgets Route et Isochrone

Widgets de calculs d'itinéraire et isochrones sous IE10 (OL3 et Leaflet) :
lorsqu'on veut saisir un point de départ, d'arrivée, ou point intermédiaire, le panel se replie en mode "mini", mais une fois la saisie effectuée le panel est mal réinitialisé : on ne peut plus saisir d'autre point car les inputs ont disparu.

C'est un problème de css (et notamment le préfixage des propriétés flexbox) qui sont surchargés en JavaScript.

Extension OL3 : rationnaliser l'utilisation des styles et markers par defaut pour les controles

Les différents contrôles de l'extension OL3 utilisent des ressources par défaut si celles-ci ne sont pas renseignées par l'utilisateur.

  • Les outils de dessin définissent ces styles en dur dans le code (pas bien)
  • Les widgets de calculs d'itinéraires et d'isochrones définissent les markers par défaut dans une classe src/Ol3/Controls/Utils/Markers (mieux)

Il faudrait rassembler et partager ces différentes définitions par défaut dans un code commun et public exporté par l'extension.

Rque : le commit suivant exporte déjà les markers par défaut des controles Route et Isocurve sous le nom ol.control.DefaultMarkers :

25debb7

Authentification HTTP et couches WMTS

Bonjour,

Certaines couches WMTS comme ORTHOIMAGERY.ORTHOPHOTOS$GEOPORTAIL:OGC:WMTS nécessitent en plus de l'APIKey un couple login/password pour pouvoir récupérer les tiles. La documentation indique clairement comment passer l'APIKey, mais pas comment spécifier ces credentials d'authentification, ce qui fait que les requête des tiles retournent des codes HTTP 403: Forbidden.

Je n'ai rien trouvé comme paramètres d'authentification dans le code du service de configuration. Sauriez-vous comment renseigner ce login/pass pour les couches sécurisées ?

Merci d'avance

ol.control.GeoportalAttribution: attributions de type texte ne s'affichent pas sous Safari

Dans le cas où les attributions (=originators) des couches n'ont pas de logo, mais uniquement du texte (par exemple : "IGN"), elles ne s'affichent pas sous Safari.

En effet, actuellement la liste des attributions est composée d'éléments DOM (de type link), et le texte est ajouté avec la méthode :
element.text = text
qui n'est pas reconnue, il faudrait plutôt utiliser :
element.textContent = text

ol.control.GeoportalAttribution: ne pas créer d'éléments de liste (<li>) vide

Dans le contrôle ol.control.GeoportalAttribution, lorsqu'aucune attribution n'est récupérée pour une couche donnée, ou si l'attribution est déjà présente (associée à une autre couche, IGN par exemple), une attribution vide était associée à la couche ("").
Or cela créait un élément de liste, même vide, qui peut gêner des surcharges CSS.

=> si une attribution vide est récupérée ("") : ne pas associer d'attribution à cette couche.

Compatibilité IE10 : calculs d'itinéraires et isochrones non fonctionnels

Widgets de calculs d'itinéraire et isochrones sous IE10 (OL3 et Leaflet) :

  • les requêtes ne donnent souvent aucun résultat, mais la patience ("Calcul en cours") ne disparait jamais, ce qui rend complètement inutilisable le contrôle, il est nécessaire de rafraîchir la page pour pouvoir faire une nouvelle recherche.

L'implémentation de Promise (ES6) écrase celle existante

Bonjour,

Actuellement, toutes les extensions sont accompagnées d'une implémentation des Promise ES6 (a priori issue de https://raw.githubusercontent.com/jakearchibald/es6-promise/) qui vient écraser l'implémentation existante, même si elle est gérée nativement par le navigateur.

Cela cause divers soucis, notamment lorsque celle-ci est monkey-patchée comme c'est le cas sur les applications Angular 2.

Il faudrait tester si le navigateur implémente ou non les Promise, avant de forcer cette implémentation. Idéalement, charger le polyfill uniquement lorsqu'aucune implémentation n'est trouvée, afin de réduire un peu la taille du bundle javascript.

Je n'ai pas encore trouvé à quel endroit des sources et à quel étape du build cette implémentation était rajoutée. Si je trouve d'ici là, je proposerai une pull request.

ol.control.LayerImport : encodeURIComponent() lorsqu'on utilise un proxy

Lorsqu'un proxy est spécifié pour utiliser le contrôle d'ajout de couches (layerimport), l'url doit être encodée.
Actuellement c'est la fonction encodeURI() qui est utilisée, or cette fonction n'encode pas les caractères du type "?" ou "&", alors que ces caractères présents dans une requête de type GetCapabilities doivent être encodés. Il faudrait donc utiliser encodeURIcomponent().

ol.control.LayerImport : extent mal récupérée pour les couches en EPSG:4326

Dans le widget d'import de couches, dans le cas de couches WMS, certaines couches sont bien ajoutées à la carte, mais l'étendue récupérée (via le GetCapabilities) n'est pas la bonne, ce qui fait que la couche apparaît toujours grisée.

layerimport-bug-extent

Analyse:
Dans le GetCapabilities, on récupère l'étendue de la couche à partir de l'information suivante :
<BoundingBox CRS="EPSG:4326" minx="-80.0" miny="-180.0" maxx="80.0" maxy="180.0"/>

on récupère ainsi l'extent : [-80, -180, 80, 180] en EPSG:4326
Or l'objet ol.Extent est du type [minx, miny, maxx, maxy] => soit [-180, -80, 180, 80] en 4326 => il y a donc un problème de correspondance.

jsdoc ol.control.LayerSwitcher : corriger l'exemple d'utilisation de la méthode addLayer

L'exemple propose l'utilisation ci-dessous :

layerSwitcher.addLayer({
      layer : gpParcels,
      config : {
          title : "Parcelles cadastrales",
          description : "description de la couche",
          quicklookUrl : "http://quicklookUrl.fr"
      }
  })

alors que ce devrait être :

layerSwitcher.addLayer(
     gpParcels,
     {
          title : "Parcelles cadastrales",
          description : "description de la couche",
          quicklookUrl : "http://quicklookUrl.fr"
      }
  )

cf. http://ignf.github.io/geoportal-extensions/ol3-0.10.0/jsdoc/ol.control.LayerSwitcher.html#addLayer

Evolutions widgets itinéraires et isochrones (ol.control.Route et ol.control.Isocurve)

Différentes évolutions pourraient être envisagées pour les widgets de calcul d'itinéraires et d'isochrones/isodistances (pour OL3) :

  • la couche de résultats devrait pouvoir être supprimée via le layerSwitcher (actuellement la "poubelle" est masquée dans ce dernier)
  • lors d'une réinitialisation du widget de calcul d'itinéraires (clic sur la flèche "retour" du panel principal) : les points intermédiaires qui ont été ajoutés sont vidés mais ne sont pas repliés. Il faudrait les supprimer, afin de revenir vraiment dans la configuration initiale (point de départ et arrivée seulement).
  • les markers pourraient être paramétrables : on pourrait associer son propre marker.

L.geoportalControl.ReverseGeocode : mise en évidence non visible

Si la réponse n'est pas visible dans la liste des résultats, lors du survol du pointeur il est nécessaire d'utiliser l’ascenseur pour rendre visible la réponse.
Comme dès que l'on déplace la souris la mise en évidence disparait, c'est un peu compliqué.

Appel aux webservices en HTTPs quand on est en HTTPs

Lorsqu'on déploie une application en HTTPs utilisant l'extension Géoportail l'invocation des webservices se fait par défaut en HTTP, ce qui bloque les requêtes.

On est obligé d'utiliser les paramètres servicesOptions, cequi est un peu lourd.

ol.control.LayerSwitcher : ordre des couches pas toujours bien mis à jour

Dans le LayerSwitcher (Ol3), si on réordonne les couches via le LayerSwitcher, mais qu'on agit aussi en supprimant des couches de la carte via des fonctions d'OpenLayers, il arrive de rencontrer des problèmes dans l'ordre des couches.

=> la propriété privée _layersOrder qui permet de récupérer l'ordre des couches n'était pas toujours bien mise à jour.

ol.layer.GeoportalWMTS et GeoportalWMS : résolutions arrondies

Les dénominateurs d'échelles minimum et maximum des couches Géoportail, fournis dans l'autoconfiguration des couches, sont arrondis.
Par exemple, pour correspondre au niveau de zoom 18, on trouve 2133, alors qu'on devrait plutôt trouver 2132,xxx.

Conséquence : au niveau 18 (1:2132) des couches sont sensées être disponibles mais dans l'autoconf c'est 1:2133 qui est renseigné donc elles ne sont pas affichées (2133>2132).

Pour l'affichage de couches Géoportail dans les extensions Ol3 (https://github.com/IGNF/geoportal-extensions/blob/master/README-ol3.md#WMTS), les résolutions min et max des couches sont calculées à partir de ces dénominateurs d'échelles, et sont donc erronés : la couche "Cartes IGN" ne s'affiche donc pas au niveau 18 alors qu'elle devrait être disponible.

Support IE9 envisageable pour OL3 ?

Bonjour,

Je viens de remarquer l'annonce des navigateurs supportés dans readme-ol3.md, qui m'a un peu surpris car je m'attendais à avoir le même périmètre de support qu'Open Layers 3. L'exclusion d'IE9 est assez contraignante pour notre projet, j'ai donc comme questions:

  • est-ce que certaines fonctionnalités de l'extension OL3 excluent techniquement IE9 sans fallback possible ?
  • si non, envisagez-vous d'ajouter IE9 au périmètre de support ?
  • si non, pouvons-nous nous en charger et soumettre une pull request ? et avez-vous une idée de la charge de travail que cela représenterait ?

Merci d'avance

L.geoportalControl.Route : calcul n'aboutissant pas

Sur une demande avec une distance très importante entre 2 points, en mode piéton, le calcul n'aboutit pas.

Idem si un des points est hors de France.

Idem si un des points est sur une ile, le service rend une erreur : ServiceException: Error in route computation Error in smartrouting Failed to execute calculateRoute com .geoconcept.smartrouting.SmartRoutingNativeException: failed to browse direct calculated route, cannot get dest node id failed to browse direct calculated route, cannot get dest node id

ol.control.LayerSwitcher : addLayer with zIndex param

Si on ajoute une couche avec le paramètre zIndex, ce paramètre n'est pas pris en compte et elle s'ajoute systématiquement au dessus des autres couches dans le layerswitcher (et dans la carte).

Le comportement attendu :

  • à l'initialisation du layerswitcher et à la suite d'un "drag and drop" dans le layerswitcher : des zIndex uniques sont affectés aux couches selon leur ordre d'affichage dans la carte
  • si un zIndex est spécifié pour l'ajout d'une couche (ou modifié suite à un setZIndex par exemple) : ce zIndex est pris en compte pour l'ordre dans la carte, et la couche est ajoutée (ou déplacée) dans le layerswitcher selon sa position par rapport aux autres couches dans la carte

Comportement à corriger :
map.addLayer({ zIndex : 2 })
doit permettre d'insérer la couche au dessus des couches ayant un zIndex <=2, et au dessous d'une couche ayant un zindex > 2

Support complet de Leaflet 1.0

La nouvelle version 1.0.1 de Leaflet est supportée par l'extension Géoportail.

Les exemples 1.0 ont été mis à jour avec cette dernière version, et le fichier geoportal-extensions/samples/leaflet/UPGRADE-LEAFLET-1.0.0.md aussi en fontion des résultats obtenus.

Le seul problème apparent est celui de l'accès au(x) marker(s) pour le widget de positionnement (utilisé par calculs d'itinéraires et d'isochrones).

Extension Leaflet : LayerSwitcher methode addLayer ne doit pas ajouter la couche à la carte

Le LayerSwitcher pour Leaflet expose deux méthodes : addLayer et addLayerConfig. (cf. http://ignf.github.io/geoportal-extensions/leaflet-0.8.0/jsdoc/L.geoportalControl.LayerSwitcher.html)

Ces deux méthodes rajoutent la couche à la carte leaflet mais ce n'est pas le travail de ce composant.

  • La méthode addLayer du LayerSwitcher doit permettre de rajouter des informations concernant une couche existante de la carte dans le LayerSwitcher:

=> si elle n'existe pas dans la carte : on ne fait rien
=> si la couche existe dans la carte et n'est pas dans le LayerSwitcher : on la rajoute avec les informations d'affichage (config)
=> si la couche existe dans la carte et est déjà renseignée dans le LayerSwitcher : on modifie les informations d'affichage pour cette couche dans le LayerSwitcher.

  • La methode addLayerConfig n'a pas de raison d'être : c'est le même travail que addLayer. Il faut la déprécier.

L.geoportalControl.ReverseGeocode : tracé partiel

L'affichage du tracé peut être partiel

ignf_apiv3

callback1465970512947({"message":null,"status":"OK","distance":"680 m","duration":"0:01:22","distanceMeters" :"680.3","durationSeconds":"82.67","bounds":"-1.61975,48.118042;-1.617973,48.123195","geometryWkt":null ,"simplifiedWkt":null,"legs":[{"distance":"680 m","duration":"0:01:22","distanceMeters":"680.3","durationSeconds" :"82.67","steps":[{"distance":"240 m","duration":"0:00:29","distanceMeters":"239.76","durationSeconds" :"29.33","navInstruction":null,"name":"R DE LA GARENNE","points":["-1.619268,48.123195","-1.619216,48 .123174","-1.619272,48.123111","-1.619498,48.122872","-1.619615,48.122748","-1.61975,48.122543","-1.619739 ,48.12208","-1.619733,48.12177","-1.619728,48.121564","-1.619668,48.121495","-1.619443,48.121461","-1 .619181,48.121457"]},{"distance":"322 m","duration":"0:00:38","distanceMeters":"321.56","durationSeconds" :"38.57","navInstruction":"R","name":"R DE LA GARENNE","points":["-1.619181,48.121457","-1.619156,48 .120905","-1.619157,48.120811","-1.619159,48.120585","-1.619187,48.120476","-1.619256,48.120346","-1 .619266,48.120043","-1.619242,48.119488","-1.619191,48.119262","-1.619107,48.119172","-1.618882,48.119172" ,"-1.618591,48.119126","-1.618314,48.118994"]},{"distance":"119 m","duration":"0:00:14","distanceMeters" :"118.98","durationSeconds":"14.77","navInstruction":"R","name":"R DE LA GARENNE","points":["-1.618314 ,48.118994","-1.618356,48.118918","-1.618358,48.11877","-1.618318,48.118378","-1.618234,48.118176","-1 .61816,48.118132","-1.618012,48.118045","-1.618005,48.118042","-1.617973,48.118069"]}]}],"startDateTime" :null,"finishDateTime":null});

Gérer l'import d'un KML créé via le portail

Les KML créés sur le portail (www.geoportail.gouv.fr) doivent être lus correctement via l'extension 'ImportLayer'.
Le problème concerne essentiellement les labels dont les styles ne sont pas restitués et apparaissent avec une punaise de type google.
Les markers semblent décalés (cf. openlayers/openlayers#4829).
Les données du KML contenues dans les balises 'ExtendedData' ne sont pas prises en compte (cf. openlayers/openlayers#5590).

KML dans le portail :
croquis-in
KML du portail chargé dans l'extension :
crouqis-out

Compatibilité IE10 : outils de croquis (ol.control.Drawing)

Plusieurs soucis constatés sur les outils de croquis sous Internet Explorer 10 :

  • le rendu n'est pas conforme à celui des autres navigateurs et ne permet pas d'accéder à toutes les fonctionnalités

outils-croquis-ie10

  • lorsqu'on saisit des marqueurs ou tracés, le clic sur la croix de fermeture ou le bouton "Enregistrer" d'une popup provoque aussi l'ajout d'un marqueur à l'endroit du clic sur la carte, ce qui n'est pas souhaité
  • de même pour les popups de modification des styles : on ne peut sélectionner une autre couleur car c'est le clic sur la carte qui est intercepté => fermeture de la popup.

ol.control.LayerImport - WMS : couches "imbriquées" non récupérées

Lors d'un import WMS, lorsque les couches sont organisées en catégorie (ou arborescence), seuls les titres des catégories sont affichés dans la liste des couches (alors que ce ne sont pas des couches, elles ne peuvent donc pas être ajoutées à la carte), et les couches présentes dans ces catégories ne sont pas affichées.

Par exemple : http://carto.atlasante.fr/cgi-bin/mapserv?, l'arborescence est de la forme suivante dans MapServer :
atlasante1

alors que dans la liste des couches actuelles, seuls apparaissent les titres des catégories :
atlasante4

  • Solution immédiate pour afficher les couches : naviguer dans les différents niveaux d'arborescence des couches du GetCapabilities pour afficher les couches visualisables.
  • Evolution : afficher les titres des catégories et les déplier au clic, pour afficher les couches de cette catégorie

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.