Hello,
I already spent a lot of hours on this simple task.
I want to make a circle which the:
Fill: false
Outline: true.
Ok, so i only want to see an outline of a circle.
But the outline need to be dashed!!!
How to do this? Pleae help!
Thanks in advance.
var viewer = new Cesium.Viewer("cesiumContainer", { infoBox: false });
var entities = viewer.entities;
var stripeMaterial = new Cesium.StripeMaterialProperty({
evenColor: Cesium.Color.WHITE.withAlpha(0),
oddColor: Cesium.Color.BLUE.withAlpha(1),
repeat: 30.0,
});
entities.add({
position: Cesium.Cartesian3.fromDegrees(-72.0, 25.0),
ellipse: {
semiMinorAxis: 250000.0,
semiMajorAxis: 250000.0,
outline: true,
outlineColor: Cesium.Color.RED,
height: 1000,
stRotation: Cesium.Math.toRadians(50.0),
material: stripeMaterial,
},
});
viewer.zoomTo(viewer.entities);
Hello Konstantin,
First, thank you very much for your answer.
But maybe i didnt explain myself correctly.
Your answer is not exactly what i meant.
I tried to upload an image, but the upload failed.
So this what i mean:
Download this free icon in SVG, PSD, PNG, EPS format or as webfonts.
Flaticon, the largest database of free vector icons.
Or,
<svg xmlns="http://www.w3.org/2000/svg">
<circle cx="50%" cy="50%" r="5%" stroke-dasharray="10 10" fill="none" stroke="blue" stroke-width="3"/>
So again, just the outline need to be dashed.
Is it possible in Cesium?
What else came to my mind
var viewer = new Cesium.Viewer(“cesiumContainer”);
var redLine = viewer.entities.add({
name: "Red dashed line",
polyline: {
positions: computeCircle(1000000),
width: 5,
material: new Cesium.PolylineDashMaterialProperty({
color: Cesium.Color.RED,
}),
},
});
function computeCircle(radius) {
var positions = [];
for (var i = 0; i < 360; i++) {
var radians = Cesium.Math.toRadians(i);
let point = new Cesium.Cartesian3(
radius * Math.cos(radians),
radius * Math.sin(radians),
6371000
);
positions.push(point);
}
return positions;
}
viewer.zoomTo(viewer.entities);
1 Like
I tried it now, it works! thank you very much Konstantin!
Hey, guys!
That works fine, but i’ve got a question:
How to put rendered circle into specific coordinates?
Solution provided by kasatik renders circuit on north pole, but i want it somewhere else, so i’ve changed it like this:
(x, y and z are provided by pickPosition() method)
let point = new Cesium.Cartesian3(
radius * Math.cos(radians) + x0,
radius * Math.sin(radians) + y0,
z0
);
After that my circuit is where I want it to be, but there is something wrong with x coordinate and it is not perfectly rounded but looks like egg.