Java 地理圆到矩形坐标

Java 地理圆到矩形坐标,java,google-maps,latitude-longitude,Java,Google Maps,Latitude Longitude,给定输入、中心纬度、中心经度和半径(以公里为单位),我想得到包含此圆的矩形的坐标(东北和西南纬度/lng) 我应该自己写方法吗?尽管我害怕不能解释一些事情,因为我的数学已经生锈了。或者我可以找到一个现成的java实现吗?我的项目中有谷歌地图sdk,但我在那里找不到任何有用的东西。我想你的平方半径比地球半径(6371公里)小得多 这样你就可以安全地忽略地球的曲率 那么数学就很简单了: // center of square double latitudeCenter = ...; // i

给定输入、中心纬度、中心经度和半径(以公里为单位),我想得到包含此圆的矩形的坐标(东北和西南纬度/lng)


我应该自己写方法吗?尽管我害怕不能解释一些事情,因为我的数学已经生锈了。或者我可以找到一个现成的java实现吗?我的项目中有谷歌地图sdk,但我在那里找不到任何有用的东西。

我想你的平方半径比地球半径(6371公里)小得多 这样你就可以安全地忽略地球的曲率

那么数学就很简单了:

// center of square
double latitudeCenter = ...;     // in degrees
double longitudeCenter = ...;    // in degrees

double radius = ...;             // in km
double RADIUS_EARTH = 6371;      // in km

// north-east corner of square
double latitudeNE  = latitudeCenter  + Math.toDegrees(radius / RADIUS_EARTH);
double longitudeNE = longitudeCenter + Math.toDegrees(radius / RADIUS_EARTH / Math.cos(Math.toRadians(latitudeCenter)));

// south-west corner of square
double latitudeSW  = latitudeCenter  - Math.toDegrees(radius / RADIUS_EARTH);
double longitudeSW = longitudeCenter - Math.toDegrees(radius / RADIUS_EARTH / Math.cos(Math.toRadians(latitudeCenter))); 
例如:

中心(纬度、经度)在
48.00,11.00和半径
10
km
将在
48.09,11.13
47.91,10.87
处给出东北角(纬度、经度)和西南角(纬度、经度)

下面是如何使用 以及
google地图服务java
API:

public static final double RADIUS_EARTH = 6371;

public static Bounds boundsOfCircle(LatLng center, double radius) {
    Bounds bounds = new Bounds();
    double deltaLat = Math.toDegrees(radius / RADIUS_EARTH);
    double deltaLng = Math.toDegrees(radius / RADIUS_EARTH / Math.cos(Math.toRadians(center.lat)));
    bounds.northeast = new LatLng(center.lat + deltaLat, center.lng + deltaLng);
    bounds.southwest = new LatLng(center.lat - deltaLat, center.lng - deltaLng);
    return bounds;
}

你最初的回答没有考虑地球的半径。。不过,您的最终编辑会产生正确的结果,谢谢。