我想问一下如何获得地理编码api中的坐标,就像这样java - 如何获取在地理编码API Android中选择的区域的周长?-LMLPHP到现在为止,我可以获取具有几何图形的地理编码api的jsonresult:{
            “界限”:{
               “东北”:{
                  “ lat”:37.842911,
                  “ lng”:-85.682537
               },
               “西南”:{
                  “纬度”:37.559684,
                  “ lng”:-86.07509399999999
               }
            },
            “位置” : {
               “ lat”:37.7030051,
               “ lng”:-85.8647201
            },
            “ location_type”:“ APPROXIMATE”,
            “视口”:{
               “东北”:{
                  “ lat”:37.842911,
                  “ lng”:-85.682537
               },
               “西南”:{
                  “纬度”:37.559684,
                  “ lng”:-86.07509399999999
               }
            }
         },

最好使用什么部分来实现此周长(如地图中所示)?

最佳答案

您可以使用Google Maps Android API Utility Library中的SphericalUtil.computeLength方法。此方法接收List<LatLng>作为参数,并计算路径的长度,因此您的列表将需要包含闭合路径。

您可以解码JSON并按以下方式计算周长:

try {
    String jsonString = "{ \"bounds\" : { \"northeast\" : { \"lat\" : 37.842911, \"lng\" : -85.682537 }, \"southwest\" : { \"lat\" : 37.559684, \"lng\" : -86.07509399999999 } }, \"location\" : { \"lat\" : 37.7030051, \"lng\" : -85.8647201 }, \"location_type\" : \"APPROXIMATE\", \"viewport\" : { \"northeast\" : { \"lat\" : 37.842911, \"lng\" : -85.682537 }, \"southwest\" : { \"lat\" : 37.559684, \"lng\" : -86.07509399999999 } } }";
    JSONObject object = new JSONObject(jsonString);

    JSONObject boundsJSON = object.getJSONObject("bounds");
    LatLng northeast = getLatLng(boundsJSON.getJSONObject("northeast"));
    LatLng southwest = getLatLng(boundsJSON.getJSONObject("southwest"));
    LatLng northwest = new LatLng(northeast.latitude, southwest.longitude);
    LatLng southeast = new LatLng(southwest.latitude, northeast.longitude);

    List<LatLng> path = new ArrayList<>();
    path.add(northwest);
    path.add(northeast);
    path.add(southeast);
    path.add(southwest);
    path.add(northwest);
    double perimeter = SphericalUtil.computeLength(path);
} catch (JSONException e) {
    // TODO: Handle the exception
    String a = "";
}


这是getLatLng方法,用于解码坐标(在上面的代码中使用):

private LatLng getLatLng(JSONObject coordinateJSON) throws JSONException {
    double lat = coordinateJSON.getDouble("lat");
    double lon = coordinateJSON.getDouble("lng");

    return new LatLng(lat, lon);
}

关于java - 如何获取在地理编码API Android中选择的区域的周长?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38118220/

10-12 00:51