您的位置:首页 > 其它

根据多个坐标点计算缩放地图的级别

2016-02-23 16:15 375 查看
直接上代码
/**
* 根据经纬极值计算绽放级别
*/
private float getZoom (List<LatLng> points) {
double maxLng = points.get(0).longitude;
double minLng = points.get(0).longitude;
double maxLat = points.get(0).latitude;
double minLat = points.get(0).latitude;
LatLng tempLatLng;

for (LatLng latLng : points) {
tempLatLng  = latLng;
if(tempLatLng.longitude > maxLng) maxLng = tempLatLng.longitude;
if(tempLatLng.longitude < minLng) minLng = tempLatLng.longitude;
if(tempLatLng.latitude > maxLat) maxLat = tempLatLng.latitude;
if(tempLatLng.latitude < minLat) minLat = tempLatLng.latitude;
}

double[] zooms = {50,100,200,500,1000,2000,5000,10000,20000,25000,50000,100000,200000,500000,1000000,2000000};//级别18到3。
LatLng pointA = new LatLng(maxLat,maxLng);  // 创建点坐标A
LatLng pointB = new LatLng(minLat,minLng);  // 创建点坐标B
double distance = DistanceUtil.getDistance(pointA, pointB);  //获取两点距离,保留小数点后两位
for (int i = 0,zoomLen = zooms.length; i < zoomLen; i++) {
if(zooms[i] - distance > 0){
return 18-i+3;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。
}
}
return 18;
}

然后可以利用百度地图api,设定中心点

LatLngBounds.Builder lb = new LatLngBounds.Builder();

lb.include(latLng);

MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(lb.build());
mBaiduMap.animateMapStatus(u);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  地图