根据多个坐标点计算缩放地图的级别
2016-02-23 16:15
417 查看
直接上代码
然后可以利用百度地图api,设定中心点
/** * 根据经纬极值计算绽放级别 */ 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);
相关文章推荐
- 百度地图经纬度转换到腾讯地图/Google 对应的经纬度
- 基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
- 在Google 地图上实现做的标记相连接
- PHP计算百度地图两个GPS坐标之间距离的方法
- sogou地图API用法实例教程
- 使用OpenLayers3 添加地图鼠标右键菜单
- gps各种地图坐标系转换
- [IOS地图开发系类]1、CLLocationManager 位置定位
- [IOS地图开发系类]2、位置解码CLGeocoder
- [IOS地图开发系类]3、地图视图MKMapview
- [IOS地图开发系类]4、MKMapview上添加MKAnnotationView,标记当前位置
- [IOS地图开发系类]5、改变大头针MKPinAnnotationView的颜色
- 魔兽地图修改器
- 国家测绘局副局长解释什么是“问题地图”ぁ
- 地图 点聚合
- asp.net地理统计图表控件
- Yahoo前端优化性能规则
- 基于高德地图写的不同功能的地图应用
- android google map研究
- 地图移动中心点获取