`

swift -> 获取经纬度

 
阅读更多

首先是通过 系统 CoreLocation 获取GPS模块原始的 坐标经纬度。

参考: http://www.hangge.com/blog/cache/detail_783.html

import UIKit
import CoreLocation

class MyLocation: UIViewController,CLLocationManagerDelegate{
    
    let locationMana:CLLocationManager = CLLocationManager();
    
    override func viewDidLoad() {
        super.viewDidLoad();
        // Do any additional setup after loading the view.
        //设置定位服务管理器代理
        locationMana.delegate = self
        //设置定位进度
        locationMana.desiredAccuracy = kCLLocationAccuracyBest
 
        if (CLLocationManager.locationServicesEnabled())
        {
            //允许使用定位服务的话,开启定位服务更新
            locationMana.startUpdatingLocation();
            print("定位开始")
        }
    }   
      //定位改变执行,可以得到新位置、旧位置
    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        //获取最新的坐标
        let currLocation:CLLocation = locations.last!
        label1.text = "经度:\(currLocation.coordinate.longitude)"
        //获取纬度
        label2.text = "纬度:\(currLocation.coordinate.latitude)"
        //获取海拔
        label3.text = "海拔:\(currLocation.altitude)"
        //获取水平精度
        label4.text = "水平精度:\(currLocation.horizontalAccuracy)"
        //获取垂直精度
        label5.text = "垂直精度:\(currLocation.verticalAccuracy)"
        //获取方向
        label6.text = "方向:\(currLocation.course)"
        //获取速度
        label7.text = "速度:\(currLocation.speed)"
    }
        
}

 其中:

1,定位精度的设置
定位服务管理类CLLocationManager的desiredAccuracy属性表示精准度,有如下6种选择:

kCLLocationAccuracyBestForNavigation :精度最高,一般用于导航
kCLLocationAccuracyBest : 精确度最佳
kCLLocationAccuracyNearestTenMeters :精确度10m以内
kCLLocationAccuracyHundredMeters :精确度100m以内
kCLLocationAccuracyKilometer :精确度1000m以内
kCLLocationAccuracyThreeKilometers :精确度3000m以内

 

以上 是 获取 GPS 原始的 经纬度, 但是与 准确真实的 经纬度有偏差, 3个名词:

地球坐标 = 以上获取到的原始GPS 经纬度

火星坐标 = 中国国情偏移量计算结果

百度坐标 = 百度地图的坐标

 

下面 两种方法 将 地球坐标 转 百度坐标,

一,  通过外部库 TQLocationConverter  库文件 见附件 

在获取到 地球坐标后 开始 转换

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    //获取最新的坐标

    let currLocation:CLLocation = locations.last!

    

    var locl:CLLocationCoordinate2D = CLLocationCoordinate2DMake(currLocation.coordinate.latitude,currLocation.coordinate.longitude);

    // 地球坐标 火星坐标

    locl = TQLocationConverter.transformFromWGSToGCJ(locl);

    // 火星坐标 百度坐标

    locl = TQLocationConverter.transformFromGCJToBaidu(locl);

    print("\(locl.longitude),\(locl.latitude)");

    

 

}

 

二, 通过 百度提供接口

http://api.map.baidu.com/ag/coord/convert?x=105.384517616982&y=30.8762459390228&from=0&to=4&mode=1

其中 X,Y 是经纬度,  from和to表示坐标系,0表示地球坐标,2表示火星坐标,4表示百度坐标

结果 是个 base64 encode 串

[{"error":0,"x":"MTA1LjM5NDcyMjc0MjM2","y":"MzAuODgwMDEyNjQwMzg3"}]

 

然后自己decode

 

两种方式, 百度 的 还是 稍微要 准一点点

 

 

 

分享到:
评论

相关推荐

    swift-YJLocationConverter-各种地理坐标系的转换工具类

    - `gcj02ToWgs84(lat: Double, lon: Double) -> (Double, Double)`:将GCJ-02坐标转换为WGS-84坐标。 - `wgs84ToGcj02(lat: Double, lon: Double) -> (Double, Double)`:将WGS-84坐标转换为GCJ-02坐标。 - `bd09...

    swift-iOS非越狱版微信自动抢红包微信修改经纬度

    总的来说,"swift-iOS非越狱版微信自动抢红包微信修改经纬度"这个主题涵盖了Swift编程、iOS系统接口利用、以及移动应用开发中的伦理与合规问题。虽然在技术层面上有一定的挑战性,但开发者需要时刻记住尊重用户隐私...

    swift-BD-09GCJ-02WGS84之间的互相转换

    它同样存在偏移,使得原始的经纬度信息无法直接用于中国的地图应用。 **WGS84坐标系统**,全球通用的大地坐标系统,是国际标准,GPS定位设备通常使用的就是这个坐标系。WGS84在全球范围内提供精确的地理位置信息。 ...

    swift-项目中用到的中国地图统计

    综上所述,"swift-项目中用到的中国地图统计"涵盖了从获取和处理地理数据、集成MapKit、实现数据可视化到优化用户体验等多个方面。开发者需要结合实际项目需求,灵活运用这些知识点,创建出功能完善且用户体验良好的...

    swift-hdselecter仿京东地址选择

    它可以用来获取设备的经纬度,然后根据这些信息匹配相应的省市区县。 6. **网络请求**:加载地址数据可能需要从服务器获取,这就涉及到网络请求。Swift中,可以使用URLSession或者第三方库如Alamofire来发起HTTP...

    使用GPS获取经纬度

    这篇博文“使用GPS获取经纬度”显然探讨了如何在编程中利用GPS功能来实现这一目标。通常,这涉及到使用特定的API或库,尤其是在移动开发中,如Android或iOS平台。 在Android系统中,GPS的使用主要通过...

    iOS获取经纬度,和位置信息。

    这个【标题】"iOS获取经纬度,和位置信息。" 暗示我们将讨论如何利用iOS的Core Location服务来获取这些关键信息。 首先,我们需要导入Core Location框架到项目中,通过在Swift文件顶部添加以下代码: ```swift ...

    swift-北京实时公交API

    Swift-北京实时公交API是为开发者提供的一种便捷的接口服务,允许他们获取北京市公交车的实时信息,如到站情况和车辆定位。这个API通常用于构建移动应用或网页服务,为用户提供方便的公交查询功能。在Swift开发中,...

    swift-iOS仿链家地图找房-高德地图找房-需要自行用pod集成地图api

    在iOS应用开发中,"swift-iOS仿链家地图找房-高德地图找房-需要自行用pod集成地图api" 这个项目涉及到的主要知识点是利用Swift编程语言结合高德地图API来实现类似链家地图找房的功能。在这个过程中,开发者需要掌握...

    swift-Location运用系统的定位方法封装分一个定位类库

    在Swift中,CoreLocation框架是用于获取设备当前位置和运动数据的主要接口。它包含了多种类和协议,如CLLocationManager、CLLocation等,用于处理定位相关的任务。 1. ** CLLocationManager 类**:这是我们在Swift...

    ios-swift--定位、二维码识别扫描、键盘高度等.zip

    开发者可以使用CLLocationManager对象来获取用户的地理位置,包括经纬度、海拔、速度等信息。为了确保用户隐私,必须在Info.plist中声明使用位置服务,并在适当的时候请求用户的授权。 2. **二维码识别扫描**:iOS...

    swift-GeoFireforObjective-C-使用Firebase实时位置查询

    GeoHash将经纬度坐标转换成字符串,便于在Firebase数据库中进行高效存储和范围查询。 3. **事件监听**: GeoFire提供事件监听功能,如`GFLocationCallback`,当地理位置数据变化或进入/离开特定区域时,可以触发回调...

    swift-YZLocationManager基于百度地图的定位类

    在Swift编程语言中,开发iOS应用时经常需要集成地图服务,以便实现位置定位、导航等功能。其中,百度地图SDK提供了一套完整的API,方便开发者在iOS应用中集成地图功能。`YZLocationManager`是一个基于百度地图SDK的...

    iphone通过gps获取经纬度的

    在iOS开发中,获取iPhone设备的GPS位置信息是常见的需求,这主要涉及到Core Location框架的使用。...在学习和使用这个示例时,不仅可以掌握获取经纬度的基本方法,还能了解到如何处理授权、错误和优化定位性能等问题。

    GPS定位获取经纬度

    "GPS定位获取经纬度"这个主题涉及到如何在应用中检测并利用GPS服务来获取用户的精确地理位置坐标,即经度和纬度。这里我们将深入探讨相关知识点。 首先,我们需要了解GPS的基本原理。GPS是一个全球卫星导航系统,...

    swift-百度地图weex的iOS模块支持定位添加标注城市内搜索正逆地理编码

    对于添加标注,可以创建一个`addAnnotation`方法,接收经纬度参数,并在地图上添加一个标注: ```swift func addAnnotation(latitude: Double, longitude: Double) { let annotation = BMKPointAnnotation() ...

    swift-ARKitCoreLocation将AR的高精度与GPS数据的尺度相结合

    GPS数据在室外环境下尤其准确,可以提供经纬度、海拔和速度等信息,但在室内或者高楼密集区可能受到遮挡而影响精度。 将ARKit与CoreLocation结合,我们可以创建出更符合实际场景需求的AR应用。例如,假设我们要开发...

    swift-salat:使用swift命令行进行礼拜时间

    Swift_Salat的实现可能依赖于一些外部库,如地理定位API,用于获取用户所在位置的经纬度,以及算法库来计算祈祷时间。这些算法通常基于太阳高度角和纬度等天文数据。Swift_Salat可能还提供了自定义设置,比如祈祷...

    swift-weather:iOS날씨보기

    Swift-Weather可能会使用CoreLocation框架来获取用户的地理位置。这个框架允许应用请求访问用户的定位服务,并提供经纬度坐标。有了这些信息,我们可以自动设置天气API的查询参数,为用户显示当前位置的天气。 为了...

Global site tag (gtag.js) - Google Analytics