Currently, Field Maps Smart Forms only supports collecting point geometry as easting and northing. It should be able to convert this to latitude and longitude in any format. I had a case where I was collecting helicopter landing zone locations and needed to convert the point geometry to latitude and longitude. I had to be in Degree Decimal Minutes and it had to be in Field Maps. Survey123 currently supports this and, when collecting data in Field Maps, the app will display the coordinate of the cross hairs in whatever format is desired, which can be changed in the profile settings of the app. I ended up spending quite a few hours writing an arcade script to do it for me.
function MetersToLatLon(x, y) {
// Converts XY point from Spherical Mercator EPSG:900913 to lat/lon in WGS84 Datum
// Fuente: http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/
var originShift = 2.0 * PI * 6378137.0 / 2.0;
// Convert longitude to WGS84
var lon = (x / originShift) * 180.0;
//Convert latitude to WGS 84
var lat = (y / originShift) * 180.0;
lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0);
return [lat, lon];
}
// Function to convert lat long in Decimal Degrres to Degree Decimal Minutes
function DDtoDDM (a, b) {
// Convert Latitude from Decimal Degrees to Degree Decimal Minutes
var latSplit = split(a, '.');
// Obtains integer portion of latitude to give latitude degrees
var degLat = latSplit[0];
// Add decimal point back to decimal portion of latitude
var decLat = "."+latSplit[1];
// Obtains latitude minutes by multiplying decimal portion of latitude by 60
var minLat = decLat*60;
// Round latitude minutes
var RminLat = Round(minLat, 4);
// Formats latitude
// '\u00B0' is the unicode for the degree symbol
var latDDM = degLat + '\u00B0' + RminLat + "' N";
//Convert Longitude from Decimal Degrees to Degree Decimal Minutes
var lonSplit = Split(b, '.');
// Returns absolute value of longitude integer to give degrees
var degLon = Abs(lonSplit[0]);
// Add decimal point back to decimal portion of longitude
var decLon = "."+lonSplit[1];
// Obtains longitude minutes by multiplying decimal portion of longitude by 60
var minLon = decLon*60;
// Round longitude minutes
var RminLon = Round(minLon, 4);
// Formats longitude
// '\u00B0' is the unicode for the degree symbol
var lonDDM = degLon + '\u00B0' + RminLon + "' W";
// Formats lat and long together
return latDDM+", "+lonDDM;
}
// Runs MetersToLatLon() function to project Northing + Easting values gathered from point feature
var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y);
// Runs DDtoDDM() function to convert projected coordiantes to Degree Decimal Minutes
var latlonDDM = DDtoDDM(latlon[0], latlon[1])
// Inputs results from DDtoDDM() function into attribute cell
return latlonDDM