如果有多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置缩放比例。如果缩放太细,那么一个屏幕放不下,如果缩放太粗,显示就太密集。需要在程序中根据点的分布来设置。

百度地图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

百度地图多个兴趣点(经纬度、坐标点)需要同时显示在地图上,如何设置自动缩放等级相关推荐

  1. 经纬度5位数和6位数差多少_各大在线地图,使用的经纬度坐标为什么都精确到小数点之后第六位...

    版权归作者所有,任何形式转载请联系作者. 作者:openGPS(来自豆瓣) 来源:https://www.douban.com/note/707875309/ 疑问由来 做过在线地图开发的同学,可能都 ...

  2. 各大在线地图,使用的经纬度坐标为什么都精确到小数点之后第六位?

    疑问由来 做过在线地图开发的同学,可能都会有疑问,各大在线地图,使用的经纬度坐标为什么都精确到小数点之后第六位? 以前的经纬度坐标,往往是(106.1234567342,30.8237234234), ...

  3. 根据经纬度确定行政区域_基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标...

    前言 近来由于工作需要,需要提取某些城市的经纬度坐标,稍微搜索了一下,发现百度地图和高德地图都提供了相关的函数和例子.那么剩余的工作也就比较简单了,保存坐标,然后转换为WGS坐标,这样才能和现有的GP ...

  4. 百度地图自定义标记获取经纬度坐标

    支持打点获取坐标,环形标记,自定义形状标记 效果如下 直接上代码: <!DOCTYPE html> <html> <script src="js/jquery- ...

  5. php批量获得经纬度,批量调用百度地图API获取地址经纬度坐标

    1 申请密匙 点击左侧 "获取密匙" ,经过填写个人信息.邮箱注册等,成功之后在开放平台上点击"创建应用",填写相关信息,在这里特别说明的是,在IP白名单框里, ...

  6. Java 根据高德地图获取经纬度坐标

    1: 申请高德服务key /*** @param addressName* @param cityName* @Description 根据高德地图, 通过地址获取经纬度坐标* @Throws* @R ...

  7. 屏幕距离和坐便转换工具_地图经纬度坐标与屏幕坐标的转换(android版)

    我们在开发GIS系统的时候,首先要解决的就是地图的可视化问题,这个问题的关键就在于如何把地图的坐标转换成屏幕坐标,然后才到渲染着色.标注等.以下以wgs84经纬度坐标为基准,介绍一下地图经纬度坐标与屏 ...

  8. 接入高德开放平台实现地址转换为经纬度坐标

    高德地图API 1 地址转为经纬度 后台人员填写完房源详情地址后,由此地址转为,电子地图中的经纬度.从而方便日后前台在电子地 图中的标识显示. 高德地图开放平台:https://lbs.amap.co ...

  9. 【具体实现过程】百度地图POI区域的边界经纬度坐标数据采集

    最近有个项目需要拿到百度地图中XXX市中所有学校的边界坐标.经过一下午的努力,终于成功拿到了坐标,对坐标数据还原和验证.特此记录一下具体实现过程和爬取思路. 前言:什么是POI? Point of i ...

最新文章

  1. 页面刷新vuex数据消失问题解决方案
  2. PHP-date(),time()函数的应用
  3. 图片缩小不失真_科技论文中图片的处理方法有哪些?
  4. div中赋值html字符串
  5. stm32之GPIO学习笔记
  6. status函数(自学数据结构第一天)
  7. Java字符串首字母大写
  8. QGIS Server安装教程
  9. 使用阿里巴巴矢量图标库下载所需的小图标
  10. 腾讯地图点聚合开发-实现地图找房功能
  11. 苹果手机一直显示搜索服务器,苹果手机safari浏览器搜索页面没有了
  12. Retrofit自定义CallAdapterFactory
  13. GSM与GPRS的区别
  14. 一个Logo道出了DELL EMC存储的追求与梦想
  15. [校招] 英文句子单词反转 - 哔哩哔哩 2020
  16. 如何零成本实现微信公众号自助查券返利机器人(二)
  17. jquery在线扫雷
  18. 揭秘换肤技术:实现系统滚动条换肤功能
  19. python怎么读excel_python怎么读写excel文件
  20. 【干货分享|建议收藏】2w字爆肝详解 JavaScript对象

热门文章

  1. FFmpeg解码流程简介
  2. 视频配音软件哪个好用?这篇文章来告诉你
  3. springcloud微服务整合/集成swagger(knife4j-小刀)实现在线文档调试和查看功能
  4. 异常 计算机原理,中断和异常 -计算机组成原理与汇编语言-电子发烧友网站
  5. css设置透明的border
  6. python:chatGPT 写一个趋势跟踪策略 量化交易程序
  7. 【手把手教你】趋势跟踪交易策略的量化回测
  8. Altium Designer 20 怎么新建工程
  9. 【物理应用】超声场可视化仿真模拟【含GUI Matlab源码 1494期】
  10. linux软件包下载,操作及ln建立链接