import CoreLocation
@objcMembers class XHLocation: NSObject, CLLocationManagerDelegate {
var locationManager : CLLocationManager!
var locationBlock : passParameterBlock!
class func sharedInstance() -> XHLocation {
struct SharedStatic {
static var instance: XHLocation = XHLocation()
}
return SharedStatic.instance
}
func initLacationManager(locationBlock:@escaping passParameterBlock) {
if CLLocationManager.locationServicesEnabled() {
locationManager = CLLocationManager.init()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 5.0
}
locationManager.startUpdatingLocation()
self.locationBlock = locationBlock
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let curLoc : CLLocation = locations.first!
print("经度:" + String(curLoc.coordinate.longitude) + " 纬度:" + String(curLoc.coordinate.latitude))
CLGeocoder.init().reverseGeocodeLocation(curLoc) {[weak self] (placemarks, error) in
if error != nil {
return
}
for placemark in placemarks! {
let address : NSDictionary = placemark.addressDictionary! as NSDictionary
if (!JSONSerialization.isValidJSONObject(address)) {
print("无法解析出JSONString")
return
}
let arr = address.object(forKey: "FormattedAddressLines") as! NSArray
self?.locationBlock(arr[0] as? String)
}
self?.locationManager.stopUpdatingLocation()
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error)
}
}
Swift 地理定位
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近项目要用到定位的功能,研究了一番百度地图,需要接入很多第三方库,还需要生成密钥等等,个人觉得比较麻烦,虽然百度...
- 参考 Building a Geo Targeting iOS App in Swift 用户带着iPhone进入...
- 委托(delegate) iOS 开发中十分常见。不管是使用系统自带的库,还是一些第三方组件时,我们总能看到 de...