高德地图添加Marker后返回当前位置

今天实在是被坑到了。。。留个记录。。

我是用在poi搜索后要把数据添加到地图上。只贴部分代码。

@Override
    public void onPoiSearched(PoiResult result, int errorCode) {
        if (errorCode == 1000) {//成功
            Log.d(TAG, "onPoiSearched: ");
            if (result != null && result.getQuery() != null) {
                ArrayList<PoiItem> pois = result.getPois();// 取得第一页的poiitem数据,页数从数字0开始,前面设置每页15条数据
                if (pois != null && pois.size() > 0) {
                    ArrayList<MarkerOptions> markerOptionsList = new ArrayList<>();
                    LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder();
                    for (int i = 0; i < pois.size(); i++) {
                        MarkerOptions markerOptions = new MarkerOptions();
                        markerOptions.position(new LatLng(pois.get(i).getLatLonPoint().getLatitude(), pois.get(i).getLatLonPoint().getLongitude()));//经纬度
                        markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.icon_map_mark_unselect));
                        markerOptions.title(pois.get(i).getTitle());
                        markerOptions.snippet(pois.get(i).getSnippet());
                        markerOptionsList.add(markerOptions);
                        boundsBuilder.include(new LatLng(pois.get(i).getLatLonPoint().getLatitude(), pois.get(i)
                                .getLatLonPoint().getLongitude()));
                    }
                    LatLngBounds bounds = boundsBuilder.build();
                    mMap.clear(true);//清理之前地图上所有图标
                    ArrayList<Marker> markers = mMap.addMarkers(markerOptionsList, true);
                    mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 10));
                } else {
                    ToastUtils.showToast(mContext, R.string.no_result);
                }
            } else {
                ToastUtils.showToast(mContext, R.string.no_result);
            }
        } else {
            ToastUtils.gaodeShowError(mContext, errorCode);
        }
    }

问题就出在那句mMap.clear(true);//清理之前地图上所有图标
每次从搜索页返回,然后先是屏幕移动到marker的坐标位置,然后又自己返回当前坐标的marker位置。。。找了各种生命周期,检查各个部分代码才发现是这个东西坑了。。。

看下高德地图的官方api
这里写图片描述
他写的应该还是蛮清楚的
两种:
一:默认是clear(false)就是上面那个,把所有东西都删了(包括当前坐标的那个marker)
二:除了当前坐标的那个marker其他全删了。

我一开始一直用clear()(上面那个),结果会产生自动返回当前坐标位置的现象(就是当前坐标移动到屏幕中心点),我猜是把当前坐标的marker清除了并同时又开着定时定位,然后会自动激活某些东西(但是api上没说。。。)

最后我用clear(true),就不会出现问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hrx-@@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值