关于获取并删除ios百度地图上的覆盖物
2015-10-28 17:32
246 查看
之前一段时间一直在研究百度地图,发现了不少令人气愤的坑,以后会一一填上,这儿只讨论如何删除地图上的覆盖物。
1,下图百度sdk中选中点击覆盖物的代理方法,坑爹的是这句“目前只支持点钟BMKPolylineView时回调”,只能是点击线段来触发!只能是点击线段来触发!只能是点击线段
来触发!但是接到得需求是点击BMKPolygonView。所以最后只能自己实现。
2,具体实现思想是,
(1)当点击地图上的点得时候,获取到该点,标记位点a。
(2)地图上的覆盖物标记为面b。
(3)判断面b中是否包含点a,如果包含则删除地图上的面b。
看起来这种方法似乎可以实现,但最后我发现,特么根本就没法判断点是不是在某一个覆盖物上,我也够傻的,如果这样可以那百度估计早提供接口了。于是最后又绕了一下,就有了一下思想步骤
(1)当点击地图上的点得时候,获取到该点,标记位点a。
(2)把点a得经纬度映射到手机屏幕的位置(CGPoint),点a1;
(3)地图上的覆盖物标记为面b。
(4)地图上的覆盖物的每一点映射成手机屏幕的point,然后通过[UIBezierPath closePath]方法在手机上生成一个面b1,
(5)判断点a1是否再面b1上([UIBezierPathcontainsPoint:touchPoint]方法),则可进一步判断点a是否再面b中。即可获取到面b;
根据这个思路,最后终于成功,不过由于实际需求中地图上的覆盖物比较多,所以点击的方式获取覆盖物会有明显的卡顿现象,最后改成了长摁地图触发。
3,以下是一个简单的删除地图覆盖物的demo,希望对您有所帮助。若有不足之处希望不吝赐教;
下载链接http://download.csdn.net/detail/zm0509/9222393
1,下图百度sdk中选中点击覆盖物的代理方法,坑爹的是这句“目前只支持点钟BMKPolylineView时回调”,只能是点击线段来触发!只能是点击线段来触发!只能是点击线段
来触发!但是接到得需求是点击BMKPolygonView。所以最后只能自己实现。
2,具体实现思想是,
(1)当点击地图上的点得时候,获取到该点,标记位点a。
(2)地图上的覆盖物标记为面b。
(3)判断面b中是否包含点a,如果包含则删除地图上的面b。
看起来这种方法似乎可以实现,但最后我发现,特么根本就没法判断点是不是在某一个覆盖物上,我也够傻的,如果这样可以那百度估计早提供接口了。于是最后又绕了一下,就有了一下思想步骤
(1)当点击地图上的点得时候,获取到该点,标记位点a。
(2)把点a得经纬度映射到手机屏幕的位置(CGPoint),点a1;
(3)地图上的覆盖物标记为面b。
(4)地图上的覆盖物的每一点映射成手机屏幕的point,然后通过[UIBezierPath closePath]方法在手机上生成一个面b1,
(5)判断点a1是否再面b1上([UIBezierPathcontainsPoint:touchPoint]方法),则可进一步判断点a是否再面b中。即可获取到面b;
根据这个思路,最后终于成功,不过由于实际需求中地图上的覆盖物比较多,所以点击的方式获取覆盖物会有明显的卡顿现象,最后改成了长摁地图触发。
3,以下是一个简单的删除地图覆盖物的demo,希望对您有所帮助。若有不足之处希望不吝赐教;
下载链接http://download.csdn.net/detail/zm0509/9222393
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android wifi 无线调试
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Android ADT 23.0.0无法更新到23.0.2问题解决方案
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- SDKMAN:轻松管理多个软件开发套件 (SDK) 的命令行工具
- 手机4大隐藏功能及使用必知常识第1/2页
- Android改变手机屏幕朝向的方法
- Parse正式发布开源PHP SDK
- php实现用手机关闭计算机(电脑)的方法
- js判断手机和pc端选择不同执行事件的方法
- JS判断客户端是手机还是PC的2个代码
- 基于OL2实现百度地图ABCD marker的效果
- JS中引用百度地图并将百度地图的logo和信息去掉