Непонятно, что вы подразумеваете под «не работает», но из того, что я вижу, код действительно приводит к двум точкам SW и NE ввода.Тем не менее, он приблизится к полюсам и международной линии времени.
Простая тестовая программа, которая выдает разумный результат:
public class LatLonBoundBox {
public static class MapCoord {
final double lat;
final double lon;
public MapCoord(double lat, double lon) {
this.lat=lat;
this.lon=lon;
}
@Override
public String toString() {
return "MapCoord [lat=" + lat + ", lon=" + lon + "]";
}
}
/**
* @param args
*/
public static void main(String[] args) {
double range = 1.0;
double inLat = 51.350801;
double inLong = -0.251850;
double latrange=range/69.172;
double longrange=Math.abs(range/(Math.cos(inLat) *69.172));
double minlat=inLat-latrange;
double maxlat=inLat+latrange;
double minlon=inLong-longrange;
double maxlon=inLong+longrange;
MapCoord min = new MapCoord(minlat,minlon);
MapCoord max = new MapCoord(maxlat,maxlon);
System.out.println(min);
System.out.println(max);
}
}