百度地图设置中心点偏移(中心点不被页面其他元素遮挡)

背景

百度地图的默认中心点是在正中心,但产品设计时常会在地图上方覆盖一层业务功能所需的元素,就要求地图的中心点往上偏移,否则就可能会被页面其他元素遮挡,需求示意图:


示例图.png

解决思路

百度提供MapStatus.Builder类提供了target和targetScreen两个方法,target的参数是一个经纬度点,targetScreen的参数则是设备屏幕上的一个点,我们就利用targetScreen来实现。

参考代码

原本移动目标坐标点到地图中心点的代码:

//latitude和longitude为需要移动到地图中心的坐标点的经纬度
LatLng latLng = new LatLng(latitude, longitude);
MapStatus mapStatus = new MapStatus.Builder().target(latLng).build();
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(mapStatus));

先设置地图中心点偏移,再移动目标坐标点:

//300和500分别为需要设置的中心点的屏幕X和Y轴位置
//可以通过屏幕宽高后按需计算获得,也可以根据layout文件中某个View(如大头针图标)的位置而获得,按需
Point p = new Point(300, 500);
//告诉地图中心点不再是中心,而是p的位置
MapStatus mapStatus = new MapStatus.Builder().targetScreen(p).build();
mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(mapStatus));

//latitude和longitude为需要移动到地图中心的坐标点的经纬度
LatLng latLng = new LatLng(latitude, longitude);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(latLng));

注意:
targetScreen方法为设置地图操作中心点在屏幕的坐标, 但只有在 OnMapLoadedCallback.onMapLoaded() 之后设置才生效,参考:

mBaiduMap.setOnMapLoadedCallback()

参考资料

百度地图官方类参考
http://lbsyun.baidu.com/cms/androidsdk/doc/6.4.0/index.html
-MapStatus类
-OnMapLoadedCallback类

你可能感兴趣的:(百度地图设置中心点偏移(中心点不被页面其他元素遮挡))