I have noticed NearMe widget displays incorrect distance. Does anyone have this problem? I looked into code and I have found out that NearMe widget uses Geometry Engine to calculate distance between two geometries. Maybe this is a bug with Geometry Engine. ESRI needs to fix this bug.
Benjamin,
What criteria have you used to determine it is the incorrect distance? Are you using a esri basemap or is your map in a planar SR?
I am using my own base map which is in Web Mercator coordinate. The distance from Geometry Engine is larger (50~100 ft) than the Measurement widget result and that is why I think something must be wrong with Geometry Engine distance.
Benjamin,
Are you zoomed in and using snapping when measuring? 50 ~ 100 ft is quite easy to mistakenly measure if zoomed out. A lot of testing has gone into the GeometryEngine so I am less likely to believe that it is the issue or else LOTS of people would be screaming about this.
I have zoomed in to verify the distance and I don't use snapping. This is the first time I am using Geometry Engine in my JS app and maybe I am using it incorrectly. Although my base map is in Web Mercator all the operational layers are in state plane and they are re-projected to Web Mercator on the fly.
In order to use Geometry Engine do all operational layers need to be in Web Mercator as well?
Benjamin,
No the only one that matters is the basemap as that is the one that sets your maps SR. Are you using geodesicLength or planarLength methods?
Thanks Robert for helping me in this issue.
I ended up writing my own function returning correct distance using Geometry Service instead of Geometry Engine. ''distParams.geodesic = true'' returns correct distance. I still wonder why Geometry Engine does not work with my data...
Anyway your answer in this question also helped me a lot
Looping with GeometryService Distance (deferred problem?)
Thank you very much
Benjamin,
Could you clarify which geometryEngine method(s) you were using? Was it the distance() method? If so, then I would suspect it's the issue Robert pointed out - That you are calculating web mercator coordinates with planar measurements (distance() is a planar measuring tool, not geodesic). Therefore the calculation itself was likely correct, but the WebMercator projection was distorting the true measurement.
Rather than using distance or planarLength(), I would suggest you use geodesicLength() instead if you are working in WebMercator. This allows you to get more correct measurements in a distorted projection with the benefit of keeping all calculations on the client and not having to make extra network requests. I encourage you to read this blog post that discusses this in more detail here - GeometryEngine part 2: Measurement | ArcGIS Blog
Be sure to note the differences between distance() and geodesicLength() - distance takes in two input points, whereas geodesicLength() takes in a polyline. So if measuring the distance between two points, you will first need to create a polyline with those two points as beginning and ending vertices on the path. Let me know if you're still stuck with this.