[英]How to get full address from latitude and longitude on HERE MAP iOS
我想在此處的地圖iOS高級sdk中按緯度和經度獲取完整的地址。在Android中,我看到可以使用ReverseGeocodeRequest按緯度和經度獲取地址,但我沒有為iOS找到任何東西。
目前,我正在從CLLocationCoordinate2D
獲取地址,但是我認為如果通過HERE MAP SDK來獲取地址會更好,因為我使用的是HERE MAP,而不是Apple MAP。 我已經附上了下面的android代碼。
GeoCoordinate vancouver = new GeoCoordinate(latitude,longitude);
new ReverseGeocodeRequest(vancouver).execute(new ResultListener<Location>() {
@Override
public void onCompleted(Location location, ErrorCode errorCode) {
try {
assetData.address = location.getAddress().toString().replace("\n", "");
} catch (NullPointerException e) {
e.printStackTrace();
}
}
});
您必須在HERE iOS SDK中使用NMAAddress類。
NMAAddress提供文本地址信息,包括門牌號,街道名稱,城市,國家/地區等。 它涵蓋了有關地址或地圖上某個點的所有內容。 NMAPlaceLocation類表示地圖上可以檢索其他屬性的區域。 這些其他屬性包括NMAAddress,唯一標識符,標簽,位置,訪問位置以及該位置的NMAGeoBoundingBox
請檢查文檔地理編碼和反向地理編碼部分以獲取更多詳細信息,包括示例代碼。
您需要使用Google API從地理坐標中獲取地址,為此請使用以下代碼
func getAddressFromLatLong(latitude: Double, longitude : Double) {
let url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=\(latitude),\(longitude)&key=YOUR_API_KEY_HERE"
Alamofire.request(url).validate().responseJSON { response in
switch response.result {
case .success:
let responseJson = response.result.value! as! NSDictionary
if let results = responseJson.object(forKey: "results")! as? [NSDictionary] {
if results.count > 0 {
if let addressComponents = results[0]["address_components"]! as? [NSDictionary] {
self.address = results[0]["formatted_address"] as? String
for component in addressComponents {
if let temp = component.object(forKey: "types") as? [String] {
if (temp[0] == "postal_code") {
self.pincode = component["long_name"] as? String
}
if (temp[0] == "locality") {
self.city = component["long_name"] as? String
}
if (temp[0] == "administrative_area_level_1") {
self.state = component["long_name"] as? String
}
if (temp[0] == "country") {
self.country = component["long_name"] as? String
}
}
}
}
}
}
case .failure(let error):
print(error)
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.