Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Fri 30 November 2018 09:18

Alain_75077
Juste Inscrit !
Date d'inscription: 29 Nov 2018
Messages: 7

Problème récupération géométrie OpenLayer

Bonjour,
J'essaye de récupérer une géométrie que j'ai préalablement dessiner sur une carte OpenLayers.
Pour réaliser ceci j'ai créer une fonction qui va afficher la géométrie du dessin dans ma console :

Code:

draw.on('drawend', function(evt){
var feature = evt.feature;
var p = feature.getGeometry();
console.error(p.getCoordinates());
});

Le soucis c'est que le navigateur me renvoie comme erreur : Uncaught TypeError: Cannot read property 'on'.

Quel est le soucis ? La façon dont je récupère la géométrie est mauvaise  ? Ou dois-je utiliser une autre façon afin de récupérer la géométrie.
De plus, j'utilise la version d'openLayer 5.3.0.

Merci d'avance pour vos réponses !

PS : Voici mon code complet

Code:

import Map from 'ol/Map.js';
      import View from 'ol/View.js';

      import {Draw, Modify, Snap} from 'ol/interaction.js';
      import {Tile as TileLayer, Vector as VectorLayer} from 'ol/layer.js';
      import {OSM, Vector as VectorSource, Stamen} from 'ol/source.js';
      import {Circle as CircleStyle, Fill, Stroke, Style} from 'ol/style.js';
import { fromLonLat } from 'ol/proj';

      var raster =new TileLayer({
        source: new Stamen({
          layer: 'toner-lite'
        })
      });
     

      var source = new VectorSource();
      var vector = new VectorLayer({
        source: source,
        style: new Style({
          fill: new Fill({
            color: 'rgba(255, 255, 255, 0.2)'
          }),
          stroke: new Stroke({
            color: '#ffcc33',
            width: 2
          }),
        })
      });

      var map = new Map({
        layers: [raster,vector],
        target: 'map',
        view: new View({
          center: fromLonLat([2, 48]),
          zoom: 6
        })
      });
      

      var modify = new Modify({source: source});
      map.addInteraction(modify);

      var draw, snap;
      var typeSelect = document.getElementById('type');

      function addInteractions() {
        draw = new Draw({
          source: source,
          type: typeSelect.value
        });
        map.addInteraction(draw);
        snap = new Snap({source: source});
        map.addInteraction(snap);

      }

  draw.on('drawend', function(evt){
var feature = evt.feature;
var p = feature.getGeometry();
console.error(p.getCoordinates());
});
      
   
      

      typeSelect.onchange = function() {
        map.removeInteraction(draw);
        map.removeInteraction(snap);
        addInteractions();
      };
      addInteractions();

Dernière modification par Alain_75077 (Fri 30 November 2018 09:23)

Hors ligne

 

#2 Fri 30 November 2018 10:39

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: Problème récupération géométrie OpenLayer

Votre objet draw n'est pas initialisée, au moment ou vous appelez

Code:

draw.on('drawen',....

Il est affecté dans la fonction addInteractions déclarée juste avant

Hors ligne

 

#3 Fri 30 November 2018 10:40

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 935
Site web

Re: Problème récupération géométrie OpenLayer

Salut,

Ton problème est que tu sur la variable "draw" tu cherches à appeler "on" alors que "draw" est "undefined" car tu as fais "var draw, snap;"

Bouge le bloc

Code:

draw.on('drawend', function(evt){
    var feature = evt.feature;
    var p = feature.getGeometry();
    console.error(p.getCoordinates());
});

dans le bloc "function addInteractions() {...}"



Cordialement

Thomas

PS: j'ai testé

Hors ligne

 

#4 Fri 30 November 2018 14:08

Alain_75077
Juste Inscrit !
Date d'inscription: 29 Nov 2018
Messages: 7

Re: Problème récupération géométrie OpenLayer

Super, Ça marche Parfaitement merci beaucoup à vous deux vous avez réussi à me débloquer !

Hors ligne

 

Pied de page des forums

Powered by FluxBB