I have a problem with creating and drawing a polygon geometry that is located between the longitude margins (basically starts from East of Japan and ends in Alaska)
The way the API is drawing the polygon is basically in the reverse order.
I used the SketchViewModel to draw the desired polygon on a map (see print screen below), and I got the rings in long, lat coordinates as:
[
[
150.50951046729438,
83.60281202131557
],
[
-151.3277526400206,
83.90137770480938
],
[
-147.58991198755575,
-83.28282929241126
],
[
-151.7627425692197,
-84.13966376019715
],
[
177.9052071073019,
-83.43080587654312
],
[
154.09088177466649,
-83.43080587654312
],
[
137.0340923764776,
-80.80424221760879
],
[
146.74253029609173,
-33.83792786815416
],
[
150.50951046729438,
83.60281202131557
]
]
If then I use the same rings to create a polygon geometry, add it to a graphic layer and plot the layer in the map, the entire map is filled besides the original shape
Isn't the API able to draw the polygon in between the longitudes margins (+180/-180) or is this a bug with the coordinates order?
Thanks!
Solved! Go to Solution.
Oh, I see. That's interesting.
Other APIs do that automatically for you, you just put in the coordinates and that's it.
Your answer helped me find these examples: https://codepen.io/andygup/pen/QeyerP and https://community.esri.com/t5/arcgis-api-for-javascript-questions/polyline-not-crossing-the-internat... (https://jsbin.com/xegicih/2/edit?html,output ), and it seems that getting a new geometry using geodesicUtils.geodesicDensify() + normalizeUtils.normalizeCentralMeridian() does the trick.
Thanks!
You have to correct for the traversal of the dateline, then it should be fixed when defining the coordinate system. You can't from -150 to +150 without going through 0, hence make -150, -210 or +150 into +210 the delta being the appropriate difference from +/-180
Solved: Programmatically creating polygon from points on b... - Esri Community
Oh, I see. That's interesting.
Other APIs do that automatically for you, you just put in the coordinates and that's it.
Your answer helped me find these examples: https://codepen.io/andygup/pen/QeyerP and https://community.esri.com/t5/arcgis-api-for-javascript-questions/polyline-not-crossing-the-internat... (https://jsbin.com/xegicih/2/edit?html,output ), and it seems that getting a new geometry using geodesicUtils.geodesicDensify() + normalizeUtils.normalizeCentralMeridian() does the trick.
Thanks!
One of the downside of things "automagically" happening... the helpers that get the job done are often forgotten 😉