ios - 获取带有经纬度的城市和国家名称(iOS)

标签 ios swift coordinates latitude-longitude

我使用这个函数:

func getDataCity(tmpLat:Double,tmpLong:Double) {

    let tmpCLGeocoder = CLGeocoder.init()

        let tmpDataLoc = CLLocation.init(latitude: tmpLat, longitude: tmpLong)

        tmpCLGeocoder.reverseGeocodeLocation(tmpDataLoc, completionHandler: {(placemarks,error) in

            guard let tmpPlacemarks = placemarks else{
                return
            }
            let placeMark = tmpPlacemarks[0] as CLPlacemark

            // Country
            guard let countryLocality = placeMark.country else{
                return
            }

            // City
            guard let cityLocality = placeMark.locality else{
                return
            }


            print(countryLocality)
            print(cityLocality)         
        })     
}

当我使用坐标时,例如,来自柏林/德国

getDataCity(tmpLat: 52.52000659999999, tmpLong: 13.404953999999975)

该功能运行良好,它显示了城市和国家/地区。但是我使用小城市或岛屿的坐标,例如杰尔巴岛(突尼斯的岛屿)

getDataCity(tmpLat: 33.8075978, tmpLong: 10.845146699999987)

该函数不打印任何内容。苹果有解释吗?我该怎么办?


要在您自己的项目中使用该功能,请将 CLLocationManagerDelegate 添加到 ViewController 并且不要忘记在您的 中添加 Privacy - Location When In Use Usage Description >信息.plist

最佳答案

Apple 的 map 不包含该位置的城市。您的代码确实可以识别国家/地区,但无法识别那里的城市(在这种情况下您会中止)。

如果您打开 Apple Maps,您会注意到该岛上没有标记任何城市,并且搜索 Houmt Arbah, Tunisia(最近的城镇)不会在 Apple Maps 中返回结果(奇怪的是它返回 Dahmani,它是大陆城镇;我不知道为什么)。它确实知道 Houmt Souq,但距离给定位置有很长的路要走。

总而言之,Apple 的 map 数据库对突尼斯的地理知之甚少。如果你花一点时间在谷歌地图和苹果 map 上四处看看,你会发现苹果 map 对突尼斯的几个地方知之甚少。例如,如果您在卫星模式下查看 Douz,然后切换到 map 模式,您会看到 Apple 的卫星图像包括未绘制 map 的整个村庄 (Al-Qalah)。坦率地说,Douz 本身(一个拥有 38,000 人的小镇)的街道 map 是可悲的。

虽然 Apple 的 map 多年来有了显着改进,并且在某些方面现在比 Google 的 map 更好,但在大多数地方 Google 往往拥有更好的信息。如果您需要在任意地点使用最好的 map ,Google map 是当今的黄金标准。

关于ios - 获取带有经纬度的城市和国家名称(iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837883/

相关文章:

javascript - 使用圆半径查找坐标来创建形状

Python:使用到点 A (x0, y0) 的距离和角度找到给定点 B 的 x,y 坐标

ios - 如何将用户 Facebook 的数据添加到 Firebase

ios - Swift3 - '[String : AnyObject]' 不可转换为 '[HTTPCookiePropertyKey : Any]'

ios - 使用 PanGestureRecognizer 创建 UIView 并在不抬起手指的情况下激活它

swift - 在 Moya 14 中记录响应和请求

ios - 如何使用自动布局防止 UIButton 超过其父 UIView 的宽度

ios - 将 IndexPath 行值传递给委托(delegate)函数而不是 Sender.tag 以删除图像项目 CollectionView Swift

ios - 如何使用 Swift 构建 ScrollView?

android - 坐标系错误,opengl es系统给android投屏