
118
|
第
3
章
locationManager.stopMonitoring (for: regionToMonitor)
最后我们需要讨论一下区域的精确性。越新的设备精度就越好,也就是说对于比
iPhone4S
更老的设备,我们最好不要创建小于
400
米半径的区域。此外,当用户
进入或退出一个区域时,从设备发出通知到你的
App
收到通知之前会有一个
3~5
分钟的延迟。如果区域的半径太小,那么当你的
App
收到通知的时候,很可能用
户早就离开这个区域了。为了周期性地收到区域通知,区域监听服务需要连接网络。
3.15
通过地名获得坐标
问题
你拥有一个街道地址,但是想知道它的坐标。例如,我们有一个游戏需要玩家从一
个地方到另一个地方,我们就需要知道这些地方的坐标,这样才能知道他们什么时
候到达。
解决方案
iOS
内置有将坐标转换为地名或反过来的系统。地理编码服务能够将一个人类可读
的地址(如“加利福尼亚州丘珀蒂诺无限圈
1
号”,即苹果总部)转换为经纬度。
这样我们就将这个坐标用于定位系统中。
首先,导入
CoreLocation
框架(见本章
3.9
节)。
然后创建一个
CLGeocoder
实例:
var geocoder = CLGeocoder()
当你想将一个地址转换成坐标时,就调用
geocodeAddressString
方法:
let addressString = self.addressTextView.text ?? "" //
取得
//
地名
geocoder.geocodeAddressString(addressString) ...