【问题标题】:Reverse Geocode Location: more accuracy than range反向地理编码位置:比范围更准确
【发布时间】:2017-05-03 15:55:01
【问题描述】:
我想获得比函数地址范围更准确的地址(从坐标)
geoCoder.reverseGeocodeLocation(location, completionHandler: {} )
在 google maps API 指南 (https://developers.google.com/maps/documentation/geocoding/intro#Results) 中,他们指定我可以更改 location_type 以获得更准确的地址。如何指定这些参数?这是我的代码:
let geoCoder = CLGeocoder()
let location = CLLocation(latitude: center.latitude, longitude: center.longitude)
geoCoder.reverseGeocodeLocation(location, completionHandler: { (placemarks, error) -> Void in ...
})
【问题讨论】:
标签:
swift
location
maps
geocoding
reversegeocodelocation
【解决方案1】:
如果您想使用链接时的Google Maps API,您需要形成对 API 的 HTTP 请求(使用您从 Google 获得的 API Key)。 reverseGeocodeLocation 使用 Apple 的 Map API,绝对不能接受 Google 的 location_type 参数。因此,您要发出的核心 HTTP 请求采用以下形式:
let url:String = "https://maps.googleapis.com/maps/api/geocode/json?latlng=\(center.latitude),\(center.longitude)&location_type=\(DESIRED_LOCATION_TYPE)&key=\(YOUR_API_KEY)"
在您指定的链接中,DESIRED_LOCATION_TYPE 可以是以下之一:
“ROOFTOP”将结果限制为我们拥有的地址
位置信息精确到街道地址。
“RANGE_INTERPOLATED”将结果限制为反映
近似值(通常在道路上)在两个精确之间插值
点(例如交叉点)。一般是插值范围
表示街道地址的屋顶地理编码不可用。
"GEOMETRIC_CENTER" 将结果限制在一个几何中心
位置,例如折线(例如街道)或多边形
(地区)。
"APPROXIMATE" 将结果限制为
以近似为特征。