IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

Afficher la longueur d'une ligne sur la carte


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 75
    Points : 37
    Points
    37
    Par défaut Afficher la longueur d'une ligne sur la carte
    Bonjour

    Pour le suivi d'une population d'oiseaux, j'utilise une table des coordonnées des nids et une table des coordonnées des points d'observation correspondant à chaque nid.
    J'affiche ces infos sur une carte (geoportal-extensions/openlayers-latest + openlayers 6.15.1) en reliant chaque nid à chacun de ses points d'observation par une ligne (LineString) ; quand on clique sur la ligne, on affiche sa longueur donc la distance au nid.
    Voir le code ci-dessous et un exemple

    J'aimerais pouvoir afficher la distance le long de la ligne sans avoir à cliquer dessus.
    Je pense qu'il faut que je revoie la méthode (qui, ici, affiche une couche par ligne et place la distance dans l'infobulle) mais je ne vois pas comment prendre ce problème...
    Merci pour vos conseils

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <script type="text/javascript">
    window.onload = function go() {
    var ortho_layer = new ol.layer.Tile
    			({
                    source: new ol.source.GeoportalWMTS
    				({
                        layer: "ORTHOIMAGERY.ORTHOPHOTOS"
                    }),
                    opacity: 0.7
                });
    var maps_layer = new ol.layer.Tile
    			({
                    source: new ol.source.GeoportalWMTS
    				({
                        layer: "GEOGRAPHICALGRIDSYSTEMS.MAPS"
                    }),
                    opacity: 0.7
                });
    var kml_layer = new ol.layer.Vector
    			({
    				source : new ol.source.Vector
    				({
    					format : new ol.format.KML
    					({
    						extractStyles:true,
    						extractAttributes:true
    					}),
    					url : 'carte_pts_obs.kml'
    				}), 
    			});
    
    // tracé lignes
    <?php
    for ($i=0;$i<$nb;$i++) {
    ?>
    var coordonnees_<?php print $i; ?> = [[<?php print mysql_result($req_aire,0,"lon").", ".mysql_result($req_aire,0,"lat"); ?>], [<?php print mysql_result($req,$i,"lon").", ".mysql_result($req,$i,"lat"); ?>]]; 
    var lineString_<?php print $i; ?> = new ol.geom.LineString(coordonnees_<?php print $i; ?>).transform('EPSG:4326', 'EPSG:3857');
    var layerLines_<?php print $i; ?> = new ol.layer.Vector({
          source: new ol.source.Vector({
              features: [new ol.Feature({
                  geometry: lineString_<?php print $i; ?>,
                  name: 10*Math.round(lineString_<?php print $i; ?>.getLength()/(1.44*10))+" m"
              })]
          }),
                style: new ol.style.Style({
                    stroke: new ol.style.Stroke({
                        color: 'red',
                        opacity: 1,
                        width: 2
                    })
                })
            });
    <?php
    }
    ?>
    // fin tracé lignes
    
    var map = new ol.Map
    	({
            target: 'map',
            layers: [ortho_layer,maps_layer,kml_layer,<?php for ($i=0;$i<$nb;$i++) {print "layerLines_".$i."," ;} ?>],
            view: new ol.View
    		({
                center: ol.proj.transform([<?php print mysql_result($req_aire,0,"lon").", ".mysql_result($req_aire,0,"lat"); ?>], 'EPSG:4326', 'EPSG:3857'),
    			zoom: 14,
            })
        });
    
    ...

  2. #2
    Membre actif
    Homme Profil pro
    Architecte progiciel et développeur informatique
    Inscrit en
    Février 2011
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte progiciel et développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 228
    Points : 286
    Points
    286
    Par défaut
    Bonjour Dom73,

    Il y existe une librairie JS ol-ext de Viglino, c'est une extension d'OpenLayers pour des addons sur la map.

    Tu as le module TextPath Style qui existe, regarde si tu peux l'exploiter comme tu le veux.
    https://viglino.github.io/ol-ext/exa....textpath.html

    Mais il existe également plein de modules (surement à retoucher un peu), certains sont un peu anciens. https://viglino.github.io/ol-ext/index.html

    Pas eu vraiment le temps de regarder celui-ci (déjà utilisé pour d'autres fonctions), dis nous si ça fonctionne et si ça répond à ton besoin.

    Bonne journée

    Xav

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 75
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse.
    Je regarde ça prochainement et je vous fais un retour.

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/02/2018, 16h22
  2. [Google Maps] Afficher une ligne sur la carte google Map
    Par bza88 dans le forum APIs Google
    Réponses: 1
    Dernier message: 24/12/2013, 17h55
  3. Commande pour afficher une ligne sur 2
    Par toxycyty dans le forum Linux
    Réponses: 2
    Dernier message: 08/10/2008, 15h30
  4. Afficher le résultat d'une requête sur une ligne
    Par cmako dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/08/2008, 14h37
  5. Réponses: 7
    Dernier message: 20/04/2007, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo