百度地图多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置自动缩放等级
如果有多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置缩放比例。如果缩放太细,那么一个屏幕放不下,如果缩放太粗,显示就太密集。需要在程序中根据点的分布来设置。
百度地图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;}//对角线的距离,单位mdouble 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
百度地图多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置自动缩放等级相关推荐
- 经纬度5位数和6位数差多少_各大在线地图,使用的经纬度坐标为什么都精确到小数点之后第六位...
版权归作者所有,任何形式转载请联系作者. 作者:openGPS(来自豆瓣) 来源:https://www.douban.com/note/707875309/ 疑问由来 做过在线地图开发的同学,可能都 ...
- 各大在线地图,使用的经纬度坐标为什么都精确到小数点之后第六位?
疑问由来 做过在线地图开发的同学,可能都会有疑问,各大在线地图,使用的经纬度坐标为什么都精确到小数点之后第六位? 以前的经纬度坐标,往往是(106.1234567342,30.8237234234), ...
- 根据经纬度确定行政区域_基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标...
前言 近来由于工作需要,需要提取某些城市的经纬度坐标,稍微搜索了一下,发现百度地图和高德地图都提供了相关的函数和例子.那么剩余的工作也就比较简单了,保存坐标,然后转换为WGS坐标,这样才能和现有的GP ...
- 百度地图自定义标记获取经纬度坐标
支持打点获取坐标,环形标记,自定义形状标记 效果如下 直接上代码: <!DOCTYPE html> <html> <script src="js/jquery- ...
- php批量获得经纬度,批量调用百度地图API获取地址经纬度坐标
1 申请密匙 点击左侧 "获取密匙" ,经过填写个人信息.邮箱注册等,成功之后在开放平台上点击"创建应用",填写相关信息,在这里特别说明的是,在IP白名单框里, ...
- Java 根据高德地图获取经纬度坐标
1: 申请高德服务key /*** @param addressName* @param cityName* @Description 根据高德地图, 通过地址获取经纬度坐标* @Throws* @R ...
- 屏幕距离和坐便转换工具_地图经纬度坐标与屏幕坐标的转换(android版)
我们在开发GIS系统的时候,首先要解决的就是地图的可视化问题,这个问题的关键就在于如何把地图的坐标转换成屏幕坐标,然后才到渲染着色.标注等.以下以wgs84经纬度坐标为基准,介绍一下地图经纬度坐标与屏 ...
- 接入高德开放平台实现地址转换为经纬度坐标
高德地图API 1 地址转为经纬度 后台人员填写完房源详情地址后,由此地址转为,电子地图中的经纬度.从而方便日后前台在电子地 图中的标识显示. 高德地图开放平台:https://lbs.amap.co ...
- 【具体实现过程】百度地图POI区域的边界经纬度坐标数据采集
最近有个项目需要拿到百度地图中XXX市中所有学校的边界坐标.经过一下午的努力,终于成功拿到了坐标,对坐标数据还原和验证.特此记录一下具体实现过程和爬取思路. 前言:什么是POI? Point of i ...
最新文章
- 页面刷新vuex数据消失问题解决方案
- PHP-date(),time()函数的应用
- 图片缩小不失真_科技论文中图片的处理方法有哪些?
- div中赋值html字符串
- stm32之GPIO学习笔记
- status函数(自学数据结构第一天)
- Java字符串首字母大写
- QGIS Server安装教程
- 使用阿里巴巴矢量图标库下载所需的小图标
- 腾讯地图点聚合开发-实现地图找房功能
- 苹果手机一直显示搜索服务器,苹果手机safari浏览器搜索页面没有了
- Retrofit自定义CallAdapterFactory
- GSM与GPRS的区别
- 一个Logo道出了DELL EMC存储的追求与梦想
- [校招] 英文句子单词反转 - 哔哩哔哩 2020
- 如何零成本实现微信公众号自助查券返利机器人(二)
- jquery在线扫雷
- 揭秘换肤技术:实现系统滚动条换肤功能
- python怎么读excel_python怎么读写excel文件
- 【干货分享|建议收藏】2w字爆肝详解 JavaScript对象