The map looks right, but the Latitude in the Frame looks wrong.
Am I making a mistake or is this a bug?
The map looks right, but the Latitude in the Frame looks wrong.
Am I making a mistake or is this a bug?
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