Suite

Comment créer un polygone avec un trou circulaire dans openlayers 3 ?

Comment créer un polygone avec un trou circulaire dans openlayers 3 ?


Pour mettre en évidence une zone sur ma carte, je dois faire un trou circulaire dans un polygone. Le polygone rectangle couvre toute la carte, le trou du cercle devrait servir de point sur ma zone à mettre en évidence.

Mais en fait, je n'arrive qu'à faire un trou rectangulaire, par exemple en utilisant la fonction appendLinearRing de Polygon :

mypolygon.appendLinearRing(new ol.geom.LinearRing([ [239850, 5069850], [239850, 5070150], [240150, 5070150], [240150, 5069850], [239850, 5069850] ]));

Le problème est que je ne trouve pas comment ajouter "Circle" en tant que géométrie facultative (opt_layout) à ol.geom.LinearRing. Des conseils ?


Je suppose que vous créez un cercle en utilisant la doc api du constructeur ol.geom.Circle(center, opt_radius, opt_layout) ici. Et puis vous voulez mettre à jour la géométrie du polygone avec ce cercle. Droite???

Si c'est le cas, vous pouvez créer les coordonnées de votre cercle et transmettre ces coordonnées à la fonction appendLinearRing.

Vous pouvez le faire comme : (Je n'ai pas testé. Des bugs mineurs peuvent exister)

var circleCenterX = 200; //le centre X de votre cercle var circleCenterY = 100; //le centre Y de votre cercle var circleRadius = 100; //le rayon de votre cercle var pointsToFind = 360; //point à générer pour créer le cercle. // J'utilise 360, ce qui est bien en termes de détails car cela fera un point pour chaque rad // mais si vous avez besoin de plus d'occurrence, vous pouvez fournir un nombre plus élevé. Si moins un nombre inférieur var circleCoords = createCirclePointCoords(circleCenterX,circleCenterY,circleRadius,pointsToFind); console.log("circleCoords.length",circleCoords.length); function createCirclePointCoords(circleCenterX,circleCenterY,circleRadius,pointsToFind){ var angleToAdd = 360/pointsToFind; coords var = []; var angle = 0; pour (var i=0;i

Voir la vidéo: monikulmio