#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: 1142
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
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