最近在做项目中,需要用到高德地图的,地理编码的功能。但是搜了一下博客,都是反地理的编码的文章。而高德的文档,都藏的比较深。下面就直接写代码了。
import UIKit
class AmpSearchManager: NSObject {
static let sharedInstance = AmpSearchManager()
var request:AMapGeocodeSearchRequest=AMapGeocodeSearchRequest()
var callback: ((AMapGeocode)->())?
let search = { () -> AMapSearchAPI? in
let serarch = AMapSearchAPI()
return serarch
}()
func getGeocode(address:String,callback:((AMapGeocode)->())?){
//AMapSearchServices.shared().apiKey = "您的Key"
AMapServices.shared().apiKey = gaoDeKey
self.search?.delegate = self
request.address = address
self.callback = callback
self.search?.aMapGeocodeSearch(request)
}
}
extension AmpSearchManager:AMapSearchDelegate{
func onGeocodeSearchDone(_ request: AMapGeocodeSearchRequest!, response: AMapGeocodeSearchResponse!) {
if response.geocodes == nil {
return
}
callback!(response.geocodes[0])
// print(response.geocodes.count)
// for geo in response.geocodes {
//
// print(geo.building)
// print(geo.formattedAddress)
// print(geo.location)
//
// }
//解析response获取地理信息,具体解析见 Demo
}
}
代码就这么多行,怎么调用呢。
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("______________")
// self.navigationController?.pushViewController(EditHotelViewController(), animated: true)
AmpSearchManager.sharedInstance.getGeocode(address: "深圳锦华大厦", callback: { a in
})
}
现在我们来看AMapGeocode里面有一些什么属性呢。
///地理编码
@interface AMapGeocode : AMapSearchObject
///格式化地址
@property (nonatomic, copy) NSString *formattedAddress;
///所在省/直辖市
@property (nonatomic, copy) NSString *province;
///城市名
@property (nonatomic, copy) NSString *city;
///城市编码
@property (nonatomic, copy) NSString *citycode;
///区域名称
@property (nonatomic, copy) NSString *district;
///区域编码
@property (nonatomic, copy) NSString *adcode;
///乡镇街道
@property (nonatomic, copy) NSString *township;
///社区
@property (nonatomic, copy) NSString *neighborhood;
///楼
@property (nonatomic, copy) NSString *building;
///坐标点
@property (nonatomic, copy) AMapGeoPoint *location;
///匹配的等级
@property (nonatomic, copy) NSString *level;
@end