ios - 使用 CLLocation 和/或 Mapkit 从坐标查找企业名称信息

标签 ios swift mapkit cllocation clplacemark

我正在尝试使用使用 CLLocationManager 返回的坐标来查看它们是否与任何本地企业紧密匹配 - 例如,如果我碰巧站在星巴克,我希望我的应用程序根据我的坐标提出建议我站在星巴克里。如果我在星巴克外 20 米处,但这是距离我站立位置最近的地址,我希望它建议“星巴克”。

我可以毫无问题地返回 CLPlacemarks,但它们包含的信息不包含任何地方的公司名称。我在英国,因此,例如,伦敦格洛斯特路的 Nando's 的地址为“170 Gloucester Road, London, SW7 4ST”。我可以在 CLPlacemark 信息中返回 170 Gloucester Road, London, SW7 4ST,没有问题,但没有任何地方提到 Nando's。

我在各种帖子中读到,该信息可能在名称属性、感兴趣的区域甚至格式化的地址属性中,但我在伦敦市中心的广泛测试表明情况并非如此,无论如何在英国。即使在美国,“Apple Inc”也仅在其地址的格式化地址属性中在 1 个无限循环之前被提及。

我尝试通过使用 CLLocation 获取用户的坐标,然后将它们用作编程式 MapKit 搜索的基础来实现此目的 - 这只是再次返回地址,而不是公司名称。

还对苹果 map 应用程序进行了一些最终用户测试(我是该应用程序的忠实粉丝),如果通常在本地搜索例如 map ,它似乎会返回相当不完整的结果。 “酒吧”、“餐厅”。有些本地的地方包括在内,有些则没有,有时结果包含很远的地方,尽管我知道附近有更多的餐馆。

我很快就得出结论,实现我想要的目标的唯一方法是使用 Google Places API,出于多种原因,我希望避免使用 Google Places API,尤其是我在 iOS 编程方面(顺便说一句,在 Swift 中)相当缺乏经验。 ..)

如果有人可以明确建议在 Mapkit 中无法本地执行此操作并且我需要使用 Google Places API,那么至少我知道,并且可以继续使用它 - 但如果有办法的话,我将非常感激知道它是什么......

提前致谢!

最佳答案

除了弗朗西斯科非常有用的答案之外,这是我必须对 currentPlaceWithCallback 进行的调整 - 我删除了:GMSPlaceLikelihoodList!给出了以下错误:无法将 GMSPlaceLikelihoodList 类型的值转换为预期的参数类型....

这是更正后的代码:

    placesClient!.currentPlaceWithCallback({ (placeLikelihoods, error) -> Void in
        if error != nil {
            print("Current Place error: \(error!.localizedDescription)")
            return
        }

        for likelihood in placeLikelihoods!.likelihoods {
            if let likelihood = likelihood as? GMSPlaceLikelihood {
                let place = likelihood.place
                print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)")
                print("Current Place address \(place.formattedAddress)")
                print("Current Place attributions \(place.attributions)")
                print("Current PlaceID \(place.placeID)")


            }
        }

})

关于ios - 使用 CLLocation 和/或 Mapkit 从坐标查找企业名称信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35566325/

相关文章:

ios - 首先调用哪种dealloc方法?

ios - 如何在 SWIFT 4 中使用 Twitter REST API 发布直接消息

ios - 如何从Objective c中的MKMapKit中删除 map 位置和注释

ios - Swift 3 - MapKit 注释触摸监听器

ios - 从核心数据实体获取属性值

ios - 单独的 UICollectionView 数据源和委托(delegate)未被调用

ios - 如何更改输入总线上的抽头频率?

ios - Swift:符合声明类函数返回实例的协议(protocol)

Swift NSCalendarUnit setValue forComponent 不工作

iPhone MapView 仅限于密苏里州