这段时间 , 项目里需要做关于导航功能 ,但是在导航前需要判断当前起点是否在一个不规则区域内 。虽然后台会把所有范围坐标返回给我, 但是对于我来说还是毫无头绪 。于是就开始在高德文档中慢慢寻找 ,但是需要在那么多的类中找到实现自己功能的代码确实有些难度。 于是就上百度 , 百度上确实有许多方法 , 比如从起点发出一条直线穿过 不规则区域 ,用于多规则区域的交点来判断 是否在区域内 。 嗯 ,想法确实 是很好 ,但是 代码确实很复杂 ,于是我懒癌又犯了 。 没办法 ,于是向公司大佬请教 ,大佬于是发了我一句代码 。
polygon.contains(arg0);
于是我就在高德文档中开始寻找polygon类 ,果然 这些问题高德早就有现成的可以直接使用 。下面是我封装的方法 , 可以直接使用 ,返回是否在区域内 ,Boolean 值。
/**
* 某个点是否在区域内
* @param aMap 地图元素
* @param latLngList 区域坐标合集
* @param latLng 需要判断的点
* @return
*/
public static boolean polygonCon(AMap aMap, List<LatLng> latLngList ,LatLng latLng ){
PolygonOptions options = new PolygonOptions();
for (LatLng i : latLngList){
options.add(i);
}
options.visible(false); //设置区域是否显示
Polygon polygon = aMap.addPolygon(options);
boolean contains = polygon.contains(latLng);
polygon.remove();
return contains;
}