Why does the GeoGraphics Frame show different Latitude than GeoPosition?
This is not a bug. When dealing with a map there are two different coordinate systems you need to handle, related by the cartographic projection you are using.
First you have the {lat, lon}
coordinates on the surface of the Earth's ellipsoidal model. These are the numbers in GeoPosition[{lat, lon}]
.
Then you have the coordinate {x, y}
on the flat map of the Earth. These are the numbers in GeoGridPosition[{x, y}, projection]
. The projection specifies the function that converts from {lat, lon}
to {x, y}
or viceversa. When you do GeoGridPosition[GeoPosition[{lat, lon}], projection]
you get GeoGridPosition[{x, y}, projection]
. If you wrap the latter with GeoPosition
, you get GeoPosition[{lat, lon}]
back. The "Equirectangular"
projection is basically defined as x = lon, y = lat
. But other projections (say "Mercator"
) have nontrivial formulas.
The map needs to use the map coordinates, that is {x, y}, and that is way your "Mercator" map does not agree with the expected {lat, lon} coordinates.
To long for a comment:
It seems that Geo-FrameTicks
are not handled well unless we use "Equirectangular"
GeoProjection
. Even if it is a cylindrical projection, as a "Mercator"
used here, the result's ticks seem to be rescaled badly.
I can't find anything about that in documentation so I'm encouraging you to report that to WRI Support.
Meanwhile use "Equirectangular"
projection if you need ticks:
GeoGraphics[ GeoPosition @ {42.31, -71.19},
GeoGridLines -> Automatic,
Frame -> True,
GeoProjection -> "Equirectangular",
GeoRange -> Quantity[10, "Miles"]
]
If you need different projections you can create custom FrameTicks
(notice that GeogridLines are correct anyway) like I did in: GeoProjection for astronomical data - wrong ticks