Android 百度地图 动态画多边形,并判断一个点是否在多边形内部

本文介绍如何使用百度地图API实现动态绘制多边形,并判断任意点是否位于多边形内部。涵盖marker添加、多边形绘制、点判断等关键技术点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目的需求,需要动态的在地图上画出多边形,并且需要判断一个点是否在多边形的范围内,根据官方的demo,结合网上的查的资料,做出的效果如下图所示:

这里写图片描述 这里写图片描述
这里写图片描述

思路就是:

1.点击地图增加marker;
2.拿到marker,根据marker来画线(判断点的个数,大于 1 时);
3.点击marker可以进行删除,长按可以进行拖拽操作;
4.当点击确定时,清除线,把多边形画出来(当点大于 2 时);
5.在地图上点击一点,并判断该点是否在多边形区域内

第一步:初始化地图,并增加监听事件

  • 声明和初始化需要用到的变量
    //marker 相关
    private Marker marker;
    List<Marker> markers = new ArrayList<>();
    //算是map的索引,通过此id 来按顺序取出坐标点
    private List<String> ids = new ArrayList<>();
    //用来存储坐标点
    private Map<String, LatLng> latlngs = new HashMap<>();

    private InfoWindow mInfoWindow;
    //线
    private Polyline mPolyline;
    //多边形
    private Polygon polygon;
    //private List<Polygon> polygons = new ArrayList<>();
    private double latitude;
    private double longitude;
    //是坐标点的多少,用来判断是画线,还是画多边形
    private int size;
    //根据别名来存储画好的多边形
    private Map<String, Polygon> polygonMap = new HashMap<>();
    //多边形的别名
    private List<String> aliasname = new ArrayList<>();
    //
    private boolean polygonContainsPoint;
    //用来存储一个点所在的所有的区域
    List<String> areas = new ArrayList<>();
        map = (MapView) findViewById(R.id.map);
        baidumap = map.getMap();
        //给marker设置点击事件,用来删除marker
        baidumap.setOnMarkerClickListener(this);
        //给map设置监听事件,用来拿到点击地图的点的坐标
        baidumap.setOnMapClickListener(this);
        //给marker设置拖拽监听事件,用来获取拖拽完成后的坐标
        baidumap.setOnMarkerDragListener(this);
  • 点击地图的监听事件:
    /**
     * 通过点击地图,来获取坐标
     *
     * @param latLng
     */
    @Overrid
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ljp345775

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值