由于本次项目 需要在国外使用所以最后选取的是使用google地图,google的地图怎么导入工程这里就不说了网上有很多,官网也给出了cocoapods的例子可能你需要考虑被墙的原因,我这裏是使用framework导入的方式地图版本 GoogleMaps.1.13.2。
这里说的是一个关于谷歌地图如何画路线上画圆的方法并且符合地图的缩放层级,圆在地图上的半径 符合自己设置的公里数半径。
使用百度和高德地图的时候都有简单的画圆方法,but,google没有这就坑了,由于我们需要设置一个地理围栏這个是需要显示出来的,中心店和半径以及范围。所以这些东西在地图上画出来的时候需要准确
接下来直接说实现方式:
首先。google 有提供一个画任意多边形的类 GMSPolygon看样子我们就从这个类入手。
思路:1、取得圆中心点(界面点) ->2、使用半径获取圆周上的点(界面点这里我们只能画一个无限接近圆的多边形)->3、界面点影射到地图的经纬度点->4、绘画
思路很简单,获取中心和半径 这个自己设置 这里的关键在于 如何將界面的点影射到GMSMaps 上。索性 有这个属性
这个属性解决我们地图到界面的影射关系最开始 我是没找的的,自己计算还要考虑缩放层级,嫃是苦所以先看看 属性 还是有好处的。
OK,影射问题解决了还有个问题就是计算圆周上的点,
这里直接给大家一个公式:
我这里是取得60 个點(注意这里的半径是米)代码如下,包括画圆所有方法都在这里
最后,由于地球是椭圆形所以在地图上,如果你的半径太大那麼出来的是椭圆 而不是圆, 这个是地图针对地球球面做的优化实际给的是圆,只是由于球面拉伸成了椭圆