Can anyone else verify this and is it expected behaviour for some reason or possibly a bug?
When creating a multipath object (e.g. a Polyline or a Polygon), the pointcount seems to skip from 0 to 2 without registering the first point.
E.g. I'm drawing a feature by capturing mouse clicks on screen, the empty Polyline json might look like this:
{"paths":[],"spatialReference":{"latestWkid":3857,"wkid":102100}}
Then I click once, and the json stays exactly the same, and the pointcount remains at zero, although that first click *is* stored in the object. Because, then when I click a second time, the json jumps to something like:
{"paths":[[[3944884.454986632,6214117.358888438],[12586059.927814495,5838414.077461138]]],"spatialReference":{"latestWkid":3857,"wkid":102100}}
and the pointcount jumps to 2.
A polygon exhibits similar behaviour.
I discovered this while trying to implement a simple "if pointcount is zero then startpath else lineto" logic. I can get around it easily enough with a separate bool property, something like isFirstPoint and manually set it, but it just seems like something isn't catching that first point properly.
Cheers,
-Paul
Hi Paul,
Ok, I can see what you are referring to here.
Remember paths or rings cannot have just one point. In order to have a legit polyline it must have atleast two points which means path has to have 2 points or more. Same for polygons.
If you want to check for the PointCount use MultiPoint approach. See the code below. This way I get the desired results
// No points yet
qml: {"points":[]}
qml: Point count is 0
qml: {"paths":[]}
// First point added
qml: {"points":[[-4207876.484103985,3465221.995640751]],"spatialReference":{"latestWkid":3857,"wkid":102100}}
qml: Point count is 1
qml: {"paths":[],"spatialReference":{"latestWkid":3857,"wkid":102100}}
// Next point added
qml: {"points":[[-4207876.484103985,3465221.995640751],[1903563.1713803783,5368785.167021126]],"spatialReference":{"latestWkid":3857,"wkid":102100}}
qml: Point count is 2
qml: {"paths":[[[-4207876.484103985,3465221.995640751],[1903563.1713803783,5368785.167021126]]],"spatialReference":{"latestWkid":3857,"wkid":102100}}
Does this help?
Thanks,
Nakul
onMouseClicked: { if (capturePoints == true) { if (numberOfClicks == 0) { // No points yet console.log(JSON.stringify(points.json)) console.log("Point count is ",points.pointCount) console.log(JSON.stringify(featurePoly.json)) featurePoly.startPath(mouse.mapPoint) points.add(mouse.mapPoint) // First point added console.log(JSON.stringify(points.json)) console.log("Point count is ",points.pointCount) console.log(JSON.stringify(featurePoly.json)) pointGraphic.geometry = points pointGraphic.symbol = markerSymbol } else { // Next point added points.add(mouse.mapPoint) featurePoly.lineTo(mouse.mapPoint) graphic.geometry = featurePoly graphic.symbol = lineSym pointGraphic.geometry = points pointGraphic.symbol = markerSymbol console.log(JSON.stringify(points.json)) console.log("Point count is ",points.pointCount) console.log(JSON.stringify(featurePoly.json)) } numberOfClicks++ } } Graphic { id: pointGraphic } MultiPoint { id: points spatialReference: { "latestWkid": 3857, "wkid": 102100 } } Polyline { id: featurePoly spatialReference: { "latestWkid": 3857, "wkid": 102100 } }