Calculate the area covered by a polygon in a googl

2019-02-11 08:56发布

问题:

I've got a series of Location / GeoPoint objects that form a polygon in my Android app. I wonder if there's any way to calculate the area covered by it.

So far I'm thinking about setting up a web service that, when posted the list of coordinates, uses the JS Google Maps API v3 to calculate the area. But there might be a way of doing this easily with some feature from Android I don't know about, natively.

Thanks in advance for your help!

回答1:

A method doing this is posted in following answer:

https://stackoverflow.com/a/16210785/891479

This is based on following formula:

http://mathworld.wolfram.com/PolygonArea.html

http://en.wikipedia.org/wiki/Polygon

Principle of plolygon area calculation using this formula:

http://maruzar.blogspot.com/2011/12/irregular-and-regular-polygon-area-by.html



回答2:

If you want to do it yourself, the way to calculate any polygn area knowing the corrdinates is explained in Polygon.

You can find a more comprehensive explanation in How to Calculate the Area of a Polygon under the topic Irregular Polygons



回答3:

Just in case it helps someone, there is a very good answer in this thread: Calculate the area of a polygon drawn on google maps in an Android application

The answer from Marian Paździoch:

There's already a library for that.

import com.google.maps.android.SphericalUtil;

//...

List<LatLng> latLngs = new ArrayList<>();
latLngs.add(new LatLng(51.893728, -8.491865));
latLngs.add(new LatLng(51.893550, -8.492479));
latLngs.add(new LatLng(51.893216, -8.492224));
latLngs.add(new LatLng(51.893404, -8.491598));
Log.i(TAG, "computeArea " + SphericalUtil.computeArea(latLngs));