地图内容全览
本工程为基于高德地图Android SDK进行封装,实现通过缩放保证地图上自定义内容(模拟为点)均展现在视野范围内, 并且地图中心点不被改变。。
###1:配置搭建AndroidSDK工程###
类 | 接口 | 说明 |
---|---|---|
CameraUpdateFactory | newLatLngBounds(LatLngBounds bounds, int padding) | 返回CameraUpdate对象,这个对象包含一个经纬度限制的区域,并且是最大可能的缩放级别。你可以设置一个边距数值来控制插入区域与view的边框之间的空白距离。方法必须在地图初始化完成之后使用。 |
LatLngBounds | including(LatLng point) | 返回一个新的矩形区域。新区域是根据传入的经纬度对原有区域进行最小的扩展。多次调用此方法即可。 这个方法将选择向东或向西方向扩展,期间扩展面积相对较小一个区域。如果相同,则优先向东方向扩展。 |
/**
* 缩放移动地图,保证所有自定义marker在可视范围中,且地图中心点不变。
*/
public void zoomToSpanWithCenter() {
if (pointList != null && pointList.size() > 0) {
if (aMap == null)
return;
centerMarker.setVisible(true);
centerMarker.showInfoWindow();
LatLngBounds bounds = getLatLngBounds(centerPoint, pointList);
aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
}
}
//根据中心点和自定义内容获取缩放bounds
private LatLngBounds getLatLngBounds(LatLng centerpoint, List<LatLng> pointList) {
LatLngBounds.Builder b = LatLngBounds.builder();
if (centerpoint != null){
for (int i = 0; i < pointList.size(); i++) {
LatLng p = pointList.get(i);
LatLng p1 = new LatLng((centerpoint.latitude * 2) - p.latitude, (centerpoint.longitude * 2) - p.longitude);
b.include(p);
b.include(p1);
}
}
return b.build();
}
/**
* 缩放移动地图,保证所有自定义marker在可视范围中。
*/
public void zoomToSpan() {
if (pointList != null && pointList.size() > 0) {
if (aMap == null)
return;
centerMarker.setVisible(false);
LatLngBounds bounds = getLatLngBounds(pointList);
aMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 50));
}
}
/**
* 根据自定义内容获取缩放bounds
*/
private LatLngBounds getLatLngBounds( List<LatLng> pointList) {
LatLngBounds.Builder b = LatLngBounds.builder();
for (int i = 0; i < pointList.size(); i++) {
LatLng p = pointList.get(i);
b.include(p);
}
return b.build();
}