1

我想問一下,如何獲得地理編碼api中的座標,就像我能夠獲得地理編碼api的jsonresult那樣:「{bounds」:{ 「東北」:{ 「LAT」:37.842911, 「LNG」:-85.682537 }, 「西南」:{ 「LAT」:37.559684, 「LNG」:-86.07509399999999 }} , 「位置「:{ 」lat「:37.7030051, 」lng「:-85.8647201 }, 「LOCATION_TYPE」: 「近似」, 「視口」:{ 「東北」:{ 「LAT」:37.842911, 「LNG」:-85.682537 }, 「西南」:{ 「LAT」:37.559684, 「LNG」:-86.07509399999999 }} } ,如何獲取在地理編碼api android中選擇的區域的周長?

什麼可能是最好的一部分用來實現這個周邊像在地圖嗎?

回答

4

您可以使用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); 
} 
+0

生病要去嘗試此感謝這個職位 –

相關問題