我做了一个简单的测试:
这是它的工作原理:
LatLng city = new LatLng(53.121896, 18.010110);
List<LatLng> pts = new ArrayList<>();
pts.add(new LatLng(53.520790, 17.404158));
pts.add(new LatLng(53.450445, 19.209022));
pts.add(new LatLng(52.659365, 17.656366));
pts.add(new LatLng(52.525305, 19.303601));
LatLngBounds bounds = new LatLngBounds(pts.get(2), pts.get(1));
boolean contains1 = PolyUtil.containsLocation(city.latitude, city.longitude, pts, true);
System.out.println("contains1: " + contains1);
boolean contains2 = bounds.contains(city);
System.out.println("contains2: " + contains2);
这是它的工作原理:
- 我创建了一个特定的点(
city
),我想测试它是否在多边形内部, - 我声明一个由4个点和2个边界点(东北和西南)组成的多边形。
contains1: false
contains2: true
为什么PolyUtil.containsLocation
返回false?我错过了什么?这是一件简单的事情,您可以在Google Maps上测试这些点。
PolyUtil是由Google提供的android maps utils类:'com.google.maps.android:android-maps-utils:0.5'