如何从 HERE MAP 上的经纬度获取完整地址 iOS

How to get full address from latitude and longitude on HERE MAP iOS

我想在此处地图 iOS premium sdk.In 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 class。

NMAAddress 提供文本地址信息,包括门牌号、街道名称、城市、国家、地区等。它包含有关地址或地图上某个点的所有信息。 NMAPlaceLocation class 表示地图上可以检索附加属性的区域。这些附加属性包括 NMAAddress、唯一标识符、标签、位置、访问位置和位置的 NMAGeoBoundingBox

请查看文档部分 Geocoding and Reverse Geocoding 了解更多详细信息,包括示例代码。

您需要使用 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)
        }
    }
}