反向地理编码位置:精度高于范围

时间:2016-12-18 12:29:45

标签: swift location maps geocoding reversegeocodelocation

我希望从函数

获得比地址范围更准确的地址(来自坐标)
geoCoder.reverseGeocodeLocation(location, completionHandler: {} )

在Google地图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 ...
    })

1 个答案:

答案 0 :(得分: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"将结果限制为a的几何中心   折线(例如,街道)或多边形等位置   (区域)。

     

"近似"将结果限制为那些结果   表征为近似。