In both Android and Windows runtimes, we have GPS data coming in in NAD83_2011. We would like to project this to the map in Web Mercator. When we use the GeometryUtils.project function, the result is off by about 3 feet. We can replicate this in ArcMap by projecting a NAD83 point to Web Mercator and not changing the default transformation. However, if we change the transformation to NAD_1983_To_WGS_1984_1 (or 5), the point projects correctly. Is there any way to specify this transformation, or change whatever default transformation the project function seems to be using?
Here is our code:
var ggaWKID = await _mediator.RequestAsync(new NewSpatialReference(query.GGA.WKID)); //NAD83
var latLong = await _mediator.RequestAsync(new NewMapPoint(query.GGA.Longitude, query.GGA.Latitude, query.GGA.Altitude, ggaWKID));
var mapService = await _mediator.RequestAsync(new GetMapService());
var geometryService = await _mediator.RequestAsync(new NewGeometryService());
var mapPoint = (IMapPoint)geometryService.Project(latLong, mapService.SpatialReference); //Web Mercator (3857) - off by 3.04 feet.
We have tried Proj.Net to apply a transformation, but my transformation numbers must be off. I am trying to use the seven parameters provided by ArcMap, but when applying this transformation, my point is off by 5.91 feet. When I pass in null for the transformation I see 3.04 feet again.
Has anyone run into this and have a solution? I'm happy to provide any other code, just let me know what you would like to see, please.