当前位置: 首页 > 面试题库 >

Swift中的反向地理编码位置

鄢朝斑
2023-03-14
问题内容

关闭。 这个问题不能重现,或者是由错别字引起的。它当前不接受答案。

想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。

5年前关闭。

改善这个问题

我输入的是纬度和经度。我需要使用reverseGeocodeLocationswift 的功能,以便向我提供位置信息的输出。我尝试使用的代码是

            println(geopoint.longitude) 
            println(geopoint.latitude)
            var manager : CLLocationManager!
            var longitude :CLLocationDegrees = geopoint.longitude
            var latitude :CLLocationDegrees = geopoint.latitude

            var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude)
            println(location)

            CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error) -> Void in
                println(manager.location)

                if error != nil {
                    println("Reverse geocoder failed with error" + error.localizedDescription)
                    return
                }
                if placemarks.count > 0 {
                    let pm = placemarks[0] as CLPlacemark


                    println(pm.locality)
                }


                else {
                    println("Problem with the data received from geocoder")
                }

在我得到的日志中

//-122.0312186
//37.33233141
//C.CLLocationCoordinate2D
//fatal error: unexpectedly found nil while unwrapping an Optional value

似乎该CLLocationCoordinate2DMake函数正在失败,然后导致该reverseGeocodeLocation函数中的致命错误。我是否在某处修改了格式?


问题答案:

您永远不会对地理位置进行地理编码,而是传递manager.location。

看到: CLGeocoder().reverseGeocodeLocation(manager.location, ...

我认为这是一个复制粘贴错误,这就是问题所在-代码本身看起来不错-差不多;)

工作代码

    var longitude :CLLocationDegrees = -122.0312186
    var latitude :CLLocationDegrees = 37.33233141

    var location = CLLocation(latitude: latitude, longitude: longitude) //changed!!!
    println(location)

    CLGeocoder().reverseGeocodeLocation(location, completionHandler: {(placemarks, error) -> Void in
        println(location)
        guard error == nil else {
            println("Reverse geocoder failed with error" + error.localizedDescription)
            return
        }
        guard placemarks.count > 0 else {
            println("Problem with the data received from geocoder")
            return
        }
        let pm = placemarks[0] as! CLPlacemark
        println(pm.locality)
    })


 类似资料:
  • 问题内容: 我正在尝试编写一个简单的方法,该方法已馈入并返回。查看Apple的文档,这似乎很简单。 以下是我丢到操场上的东西: 就目前而言,我的方法返回nil。我不确定我的错误在哪里,但是我可以放心,这对我来说是愚蠢的。感谢您的阅读。 问题答案: 或者简单地: 或扩展CLLocation: 要将地标格式化为邮寄地址,可以使用“联系人”框架: 地标 包含CLPlacemark对象的数组。对于大多数地

  • 例如,我访问了APIhttps://nominatim.openstreetmap.org/reverse?format=json&lat=24.9128455&lon=67.002839&zoom=18&addressdetails=1 没有显示address29字段,但当我点击此url时 http://nominatim.openstreetmap.org/reverse?format=jso

  • 问题内容: 我正在开发其中要求之一是能够基于GPS数据执行实时反向地理编码操作的应用程序。特别是,我必须能够确定纬度,经度对映射到的州/省,并检测何时从一个州/省迁移到另一个州/省。 到目前为止,我有两个想法,但想知道是否有人对以下两个方面有任何想法: 有效解决此问题的最佳方法是什么? 在哪里可以找到一个好地方,北美州/省边界的合适格式是什么 首先,这是我的两个主要想法: 将北美分成一个网格,网格

  • 本文向大家介绍ios百度地图的使用(普通定位、反地理编码),包括了ios百度地图的使用(普通定位、反地理编码)的使用技巧和注意事项,需要的朋友参考一下 iOS定位 - 普通定位(没有地图) - 反地理编码(得到具体位置),下面通过代码给大家详解,代码如下: ios百度地图的使用(普通定位、反地理编码) 1.首先接受基本的地图功能 新建一个地图类,xib拖也行,我这边是代码实现的。   这样基本的地

  • 我试图在HMS(Huawei Mobile Services)设备上使用对lat/long坐标进行地理编码,但结果总是得到一个空列表。 为了验证这实际上应该起作用,我检查了,它返回。 如何在HMS设备上使用对lat/long进行地理编码?哪些配置/设置是必要的,以避免达到这个限制? 我已经看到了使用位置/站点工具包的解决方案,但如果可能的话,我更喜欢使用“普通”的Android API。

  • 问题内容: 有没有办法在Swift中处理反向范围? 例如: 是一个无限循环。 在较新版本的Swift中,该代码可以编译,但在运行时会出现错误: 致命错误:无法使用upperBound <lowerBound形成Range 我知道我可以代替使用计算和用作索引。我只是想知道是否还有更清晰的地方? 问题答案: 更新以获取最新的Swift 3(仍可在Swift 4中使用) 您可以在范围上使用该方法 或方法