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

来源:互联网 发布:淘宝苹果id代充 编辑:程序博客网 时间:2024/06/01 07:45

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

我是用在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),就不会出现问题了。

1 0