Android 高德地图多边形范围点击事件

1、前提

由于需求是点击多边形范围展示该范围详情,然而高德api却没有提供此项功能,不得已只能自己想办法,后发现可以换一种思路,利用地图点击事件获得该点击值的经纬度 ,在利用该经纬度去判断是否下图形当中,可以实现此功能,虽然繁琐,但不失为一种能实现的方式,思路清晰了,开始实现!

2、实现

  1. 首先拿到点击地图的经纬度

    aMap.setOnMapClickListener(latLng -> {
                Log.e("TAG", "setOnMapClickListener: "+latLng );
            });
  2. 把图形经纬度值存在maplist里

     Map<Integer, List<LatLng>> map;
     for (int i = 0; i < xx.size(); i++) {
             List<LatLng> list = new ArrayList<>();
             for (int j = 0; j < xx.size(); j++) {
                   list.add(new LatLng(lat, lng));
                   }
                  map.put(i, list);
      }
  3. 判断某个点是否在区域里,返回true为在,false为不在

     public 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;
        }

     

  4. position为点击的哪个

    aMap.setOnMapClickListener(new AMap.OnMapClickListener() {
                @Override
                public void onMapClick(LatLng latLng) {
                    int position = -1;
                    for (int i = 0; i < map.size(); i++) {
                        if (polygonCon(aMap, Objects.requireNonNull(map.get(i)), latLng)) {
                            position = i;
                        }
                    }
                       //点击的哪个
                       Log.e("TAG", "onMapClick: "+position );
                    
                }
            });

     

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值