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

在Swift中从经纬度中查找城市名称和国家/地区

郗鹏
2023-03-14
问题内容

我正在Swift3中开发应用程序,但遇到字母问题,我找不到答案。

我怎么知道基于纬度和经度的城市名称和国家简称?

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate{
    let locationManager = CLLocationManager()
    var latitude: Double = 0
    var longitude: Double = 0
    override func viewDidLoad() {
        super.viewDidLoad()
        // For use when the app is open & in the background
        locationManager.requestAlwaysAuthorization()
        // For use when the app is open
        //locationManager.requestWhenInUseAuthorization()
        locationManager.delegate = self
        locationManager.startUpdatingLocation()
        if CLLocationManager.locationServicesEnabled() {
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBest
            locationManager.startUpdatingLocation()
        }
    }
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        if let location = locations.first {
            print(location.coordinate)
            latitude = location.coordinate.latitude
            longitude = location.coordinate.longitude
        }
    }
    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        if (status == CLAuthorizationStatus.denied){
            showLocationDisabledpopUp()
        }
    }
    func showLocationDisabledpopUp() {
        let alertController = UIAlertController(title: "Background Location Access  Disabled", message: "We need your location", preferredStyle: .alert)
        let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
        alertController.addAction(cancelAction)
        let openAction = UIAlertAction(title: "Open Setting", style: .default) { (action) in
            if let url = URL(string: UIApplicationOpenSettingsURLString){
                UIApplication.shared.open(url, options: [:], completionHandler: nil)
            }
        }
        alertController.addAction(openAction)
        self.present(alertController, animated: true, completion: nil)
    }
}

问题答案:

我建议将Google Maps
API
与您的项目集成。如果您这样做,则可以使用Google提供的反向地理编码来完成您的任务。

此外,谷歌还有用于IOS开发的Google Maps
SDK
,这也是值得考虑的。

UPD:
您可以在不将地图集成到项目中的情况下做到这一点。基于此答案,您可以使用对Google
API的http请求来实现这一目标。要求:

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=API_KEY

返回JSON带有有关所请求地点信息的对象,包括国家和城市名称。

顺便说一句,我强烈建议使用Alamofire在Swift中发出http请求。



 类似资料:
  • 我有一个表格,上面有国家、州、城市、城市的纬度/经度。我试图构建一个json字符串,如下所示。 数据库查询结果在一个数组中:JSONData。我有国家的代码。不确定如何添加一个州如果它不存在和一个城市如果它不存在与城市的纬度和经度(我有的部分???)

  • 问题内容: 有没有一种方法可以使用javascript的google maps API从纬度和经度点获取城市名称? 如果可以,请举个例子吗? 问题答案: 这称为 反向地理编码 Google提供的文件: http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding。 调用Google地理编码网络服务的示例: ht

  • 我有500000个纬度和经度坐标列表,如下所示: 我希望使用python在一个新列中获得每个坐标的城市、州和国家,如下所示: 有了这么大的数据集,如何在python中实现这一点?我听说过Google的API,Nominatim的API和Geopy包。 如何将所有行运行到此代码中?现在我必须手动输入经纬度到最后一行。 输出给我('Bowdon','North Dakota','USA')。我希望用我

  • 问题内容: 我有一张表,上面有: 城市纬度经度 而且我需要一个sql查询来知道所有城市都距离纽约100英里。 问题答案: 也许这对您有帮助:http : //www.scribd.com/doc/2569355/Geo-Distance-Search-with- MySQL 这是一个不错的介绍。或只是google for ,您会发现一些教程。 如果有可能并且想让它变得更简单,请直接使用支持距离查询

  • 我已经在搜索上实现了谷歌地图API。我的代码工作正常,直到自动生成的位置,但我想要这样的设施,我可以得到准确的位置,只提供城市名称,而不是整个格式的字符串。 对于EX: 请检查此映像http://demo.ncryptedprojects.com/nct_bnb_clone_new/untitled.png 我正在输入城市名称孟买在搜索框和谷歌地图API检索所有值在下拉。当某人没有选择任何值从下拉

  • 问题内容: 在我当前的android应用程序中,我想根据输入的城市名称,街道名称或邮政编码获取地理坐标。我该怎么做? 最好的问候,罗尼 问题答案: 查看方法。 像这样使用它: