1

Я хотел бы спросить, как достичь, чтобы получить координату в геокодировании api, которая похожа на это geocoding api perimeter с момента, когда я смогу получить jsonresult геокодирования api, который имеет геометрию ": { " bounds ": { "северо-восток": { "ш": 37,842911, "LNG": -85,682537 }, "юго-запад": { "ш": 37,559684, "LNG": -86,07509399999999 } }, " местоположение ": { " lat ": 37.7030051, " lng ": -85.8647201 }, "LOCATION_TYPE": "ПРИБЛИЖЕННАЯ", "вьюпорт": { "северо-восток": { "ш": 37,842911, "LNG": -85,682537 }, "юго-запад": { "ш": 37,559684, «LNG»: -86,07509399999999 }} },Как получить периметр области, выбранной в геокодировании api android?

Что может быть лучшая часть использовать для достижения этого периметра, как на карте?

ответ

4

Вы можете использовать метод SphericalUtil.computeLength от Google Maps Android API Utility Library. Этот метод принимает в качестве параметра 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

больной собирается попробовать это спасибо за сообщение –