百度地图旋转时不更改地图上的点位
来源:互联网 发布:部落冲突11本升级数据 编辑:程序博客网 时间:2024/06/03 13:57
在使用百度地图显示点位的时候,为了能够让用户体验更好,我允许了地图可手势旋转。那么问题来了,在旋转的时候会发现请求的数据点位会先减少,当旋转90度以后剩下的寥寥无几直至消失。对于同一个位置 我们只是旋转了一下地图,点位数目就会不同,这显然不是我想要的结果,我想要的结果是在旋转的时候中间的数据点不变,屏幕周围的点随着地图的显示而显示。那么为什么会出现这种情况呢?现在我来分析一下。
我们请求数据的时候是获取的屏幕左上角和右下角的经纬度,百度地图上有这个api,所以原本认为很简单的问题。看原来是这种状态
现在让我们来向右旋转一下,慢慢旋转 就会出现如下情况
这时候你会发现经度成为了右上角和左下角一条线,当你继续旋转的时候一定会出现左上角和右下角的纬度成为一条线。这时候你再通过左上角和右下角的经纬度请求数据,锁请求踹的数据就是在一条线上,这时候就开始出现数据请求不到,点位添加不上的情况, 也就是点位消失了。左旋转也是同理,不再叙述。现在来说下解决方法。
在旋转地图的时候你会发现,手机屏幕的边缘会在地图上画一个圆形(需要想象 用到几何了哦),其半径就是手机屏幕的对角线一半。不管你怎么旋转,只要地图中心店在手机的位置不变,你的手机屏幕所显示的地图一定在这个圆内。如下所示
但是我们没有办法获取这个圆的区域的某个角的经纬度,怎么办呢?继续几何,在圆的外面再来一个正方形,这个正方形的边长就是这个圆的直径,也就是手机屏幕的对角线长。如下图
这时候我们再获取对角的经纬度就好获取了,当旋转的时候 我们就在地图代理的方法
中通过获取屏幕中心点经纬度和屏幕最大经纬度跨度的方式得到最外部正方形的左上角和右下角的经纬度。
在对比经度跨度和纬度跨度时候一定要取绝对值。具体代码如上。这个时候你获取的点位范围会大一点,再通过只显示屏幕范围内的点的方式把多于的点位过滤掉,这样就完成了。不管你怎么旋转,地图上的点位都会正常显示了。完毕,如果你觉着好,就给我点赞
- 百度地图旋转时不更改地图上的点位
- 百度地图添加闪烁点位
- 百度地图---查看地图上的地理位置
- 百度地图上大数据量点的显示(基于…
- 百度地图标注点上添加数字
- 地图上显示div点位
- 百度地图在处理不同形式的点时互相不影响的实现思路
- 百度地图上的气泡
- 百度地图API(3):判断地图上的点是否在 圆形 多边形 区域内
- 百度地图API(3):判断地图上的点是否在 圆形 多边形 区域内
- 百度地图取点
- 百度地图聚合点
- 实现地图上显示多mark点,自定义infoWindow,跳转高德地图和百度地图
- 百度地图显示一定范围内的点
- 百度地图聚合点的展示
- 使用百度地图的点聚合功能
- 关于百度地图点聚合的问题
- 使用百度地图(上)
- linux查找目录下的所有文件中是否含有某个字符串
- C++ 生成dll的入口函数
- android CoordinatorLayout使用
- spring aop
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- 百度地图旋转时不更改地图上的点位
- Windows远程桌面如何设置任意大小的分辨率?
- android studio快捷键和Build和Gradle详解
- Android Studio 使用正式签名进行调试
- HDU-5475-An easy problem【线段树】
- 单例设计模式
- ListView中添加FootView时应该注意的内存溢出问题
- 《unityshader入门精要》学习笔记-屏幕后期处理-调整屏幕亮度、饱和度、对比度
- Makefile详解—clean