2

我想在这里地图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();

                }



            }

        });
4

2 回答 2

3

您必须使用 HERE iOS SDK 中的NMAAddress类。

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

请查看文档部分地理编码和反向地理编码以获取更多详细信息,包括示例代码。

于 2019-06-17T07:11:01.460 回答
0

您需要使用 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)
        }
    }
}
于 2019-06-17T07:22:43.147 回答