百度地图多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置自动缩放等级
来源:互联网 发布:西安java培训多少钱 编辑:程序博客网 时间:2024/05/22 05:04
如果有多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置缩放比例。如果缩放太细,那么一个屏幕放不下,如果缩放太粗,显示就太密集。需要在程序中根据点的分布来设置。
百度地图Android SDK v3.5.0从3.5版本开始,它的缩放级别从3-20,总共18个级别,如下:
{"10m", "20m", "50m", "100m", "200m", "500m", "1km", "2km", "5km", "10km", "20km", "25km", "50km", "100km", "200km", "500km", "1000km", "2000km"}
Level依次为:20、19、18、17、16、15、14、13、12、11、10、9、8、7、6、5、4、3
我们可以先计算出两个点之间的距离,从而判断设置其Level。
因为我需要显示很多点,因此计算出了经纬度的范围,然后计算出最长的距离,这个距离就是在同一个屏幕上需要显示的长度。我比划了一下手机上的百度地图,宽度差不多是单位长度的8.5倍,简单起见就当成9倍。比如计算出来的最长的距离是10公里,那么单位长度应该是10/9=1.1公里左右,然后跟缩放比例对比一下,比1000m的缩放级别要广,下一个级别就是2000m。因此就设置2000m的level 13就可以了。伪代码:
//经度范围-180到180,纬度范围-90到90,对所有的轨迹中的经纬度进行比较,找到最大和最小的经度,最大和最小的维度 double minLongitude=180 ,maxLongitude=-180,minlatitude=90,maxlatitude=-90; for(LatLng pos:坐标的list){ if(minlatitude > pos.latitude) minlatitude=pos.latitude; if(maxlatitude < pos.latitude) maxlatitude = pos.latitude; if(minLongitude > pos.longitude) minLongitude = pos.longitude; if(maxLongitude < pos.longitude) maxLongitude = pos.longitude; } //对角线的距离,单位m double maxdis=DistanceUtil.getDistance(new LatLng(minlatitude,minLongitude),new LatLng(maxlatitude,maxLongitude)); int [] zoomSize={10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 25000, 50000, 100000, 200000, 500000, 1000000, 2000000}; int [] zoomlevel={20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3}; //将轨迹显示在地图上,正好是标准尺的9倍。 double mapWidth = maxdis/9; int dx=0; //找到合适的单位距离,就是稍微大一点的那个单位 for(int i=0;i<zoomSize.length;i++){ if(mapWidth < zoomSize[i]) { dx = i; break; } } MapStatus.Builder builder = new MapStatus.Builder(); //地图中心移动到轨迹中间的地方 builder.target(new LatLng((minlatitude+maxlatitude)/2,(minLongitude+maxLongitude)/2)); //设置缩放级别 builder.zoom(zoomlevel[dx]); //刷新地图 mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
思路参考http://blog.csdn.net/u013067184/article/details/48471199
阅读全文
0 0
- 百度地图多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置自动缩放等级
- 图吧地图:①得到地图上某个位置的经纬度;②显示多个坐标点;③动态显示多个坐标点;
- android实现进入百度地图后自动显示兴趣点
- 根据数据库中提供的坐标(经纬度) 在前端地图上标示坐标点、并显示
- 百度地图api根据地图缩放等级显示不同的marker点
- 百度地图 根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
- 百度地图 设置缩放等级
- 百度地图4.0多个经纬度展示在地图上
- 百度地图兴趣点检索
- 百度地图显示多个标注点
- 百度地图显示多个标注点
- 百度地图显示多个标注点
- 百度地图AIP(2):地图根据标注点位置自适应调整缩放等级
- 根据多个坐标点计算缩放地图的级别
- 百度地图-设置中性点坐标
- R在地图上画经纬度点
- 百度地图中心坐标点如何获取
- 实现在地图上显示几个坐标点
- Factory模式
- 在linux虚拟机上部署MyEclipse上的javaWeb项目步骤
- C语言——实例007 输出特殊图案,请在c环境中运行
- C++虚函数实现原理
- 2017 多校2 1001 Is Derek lying?
- 百度地图多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置自动缩放等级
- ICCV 2015 揭开微软152层神经网络的面纱
- TensorFlow基础知识1-计算图
- (转)隐藏在生活里的量化投资密码
- java学习笔记--springboot集成UrlRewrite实现URL伪静态化[jar包和war包]
- csu A(1970): LXX数
- keepalived + LVS
- HDU 1242 Rescue --BFS+重载优先队列
- 2017多校2 1011 Regular polygon