Swift - 经纬度位置坐标与真实地理位置相互转化

通过CoreLocation类,得到的定位信息都是以经度和纬度等表示的地理信息,通过CLGeocoder类可以将其反编码成一个地址。反之,也可根据一个地址获取经纬度。

1,通过经纬度获取地址


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

import UIKit

import CoreLocation

import MapKit

class ViewController: UIViewController ,CLLocationManagerDelegate {

    @IBOutlet weak var textView: UITextView!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        reverseGeocode()

    }

    

    //地理信息反编码

    func reverseGeocode(){

        var geocoder = CLGeocoder()

        var p:CLPlacemark?

        var currentLocation = CLLocation(latitude: 32.029171, longitude: 118.788231)

        geocoder.reverseGeocodeLocation(currentLocation, completionHandler: {

            (placemarks:[AnyObject]!, error:NSError!) -> Void in

            //强制转成简体中文

            var array = NSArray(object: "zh-hans")

            NSUserDefaults.standardUserDefaults().setObject(array, forKey: "AppleLanguages")

            //显示所有信息

            if error != nil {

                //println("错误:\(error.localizedDescription))")

                self.textView.text = "错误:\(error.localizedDescription))"

                return

            }

            let pm = placemarks as! [CLPlacemark]

            if pm.count > 0{

                p = placemarks[0] as? CLPlacemark

                //println(p) //输出反编码信息

                self.textView.text = p?.name

            } else {

                println("No placemarks!")

            }

        })

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

    }

}

2,通过地址获取经纬度


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

import UIKit

import CoreLocation

import MapKit

class ViewController: UIViewController ,CLLocationManagerDelegate {

    @IBOutlet weak var textView: UITextView!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        locationEncode()

    }      

    

    //地理信息编码

    func locationEncode(){

        var geocoder = CLGeocoder()

        var p:CLPlacemark!

        geocoder.geocodeAddressString("南京市新街口大洋百货", completionHandler: {

            (placemarks:[AnyObject]!, error:NSError!) -> Void in

            

            if error != nil {

                self.textView.text = "错误:\(error.localizedDescription))"

                return

            }

            let pm = placemarks as! [CLPlacemark]

            if pm.count > 0{

                p = placemarks[0] as! CLPlacemark

                self.textView.text = "经度:\(p.location.coordinate.longitude)   "

                    + "纬度:\(p.location.coordinate.latitude)"

            } else {

                println("No placemarks!")

            }

        })

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

    }

}

时间: 2024-10-15 12:53:01

Swift - 经纬度位置坐标与真实地理位置相互转化的相关文章

微信如何根据经纬度坐标查询具体地理位置

微信如何根据经纬度坐标查询具体地理位置 好多人会问为什么微信高级接口获取的坐标信息位置不准,主要原因不是微信获取的不准,而是微信获取的是gps坐标,如果你直接用百度或google的api去解析的话肯定会出现误差的. 首先你需要吧gps位置转换成google或者百度的坐标,然后在通过转换后的坐标去获取准确的地理位置. 方法一:gps转换成google或者百度坐标,转换gps的接口 http://map.yanue.net/gps.html 方法二:gps转换成百度坐标 function getgp

OpenStreetMap、googleMap等经纬度和行列号之间相互转化

# OpenStreetMap经纬度转行列号 def deg2num(lat_deg, lon_deg, zoom): lat_rad = math.radians(lat_deg) n = 2.0 ** zoom xtile = int((lon_deg + 180.0) / 360.0 * n) ytile = int((1.0 - math.log(math.tan(lat_rad) + (1 / math.cos(lat_rad))) / math.pi) / 2.0 * n) retu

获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)

如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等) 目标:使用百度定位sdk开发实时移动距离计算功能,根据经纬度的定位,计算行驶公里数并实时刷新界面显示.大家都知道定位有三种方式:GPS .Wifi . 基站 .误差方面的话,使用GPS误差在10左右,Wifi则在20 - 300左右 ,而使用基站则误差在100 - 300左右的样子,因为在室内GPS是定位不到的,必须在室外,而我们项目的需求正好需要使用GPS定位,所以我们这里设置GPS优先.车,不可能在室

h5地理位置API

h5地理位置API 地理API允许javascript程序向浏览器询问用户的真实地理位置,支持地理位置API的浏览器在访问前总是会询问用户是否允许. 获取用户地理的途径有: 1.ip地址书上说不准确,很多时候获取的是ISP机房的位置,但是获取非常方便,没有什么限制.但是实际上我觉得在中国,ip地址还是比较准确的,基本上上能精确到小区或大楼的标准. 2.GPS   非常准确,但是需要在户外,且需要很长时间搜索卫星.最主要的很多设备比如笔记本电脑基本都是不带GPS的,新的智能手机倒是都有. 3.Wi

微信获取到的经纬度坐标不精准的问题

(转自:风行天下 http://www.cnblogs.com/php-linux/p/4730744.html) 微信如何根据经纬度坐标查询具体地理位置 好多人会问为什么微信高级接口获取的坐标信息位置不准,主要原因不是微信获取的不准,而是微信获取的是gps坐标,如果你直接用百度或google的api去解析的话肯定会出现误差的. 首先你需要吧gps位置转换成google或者百度的坐标,然后在通过转换后的坐标去获取准确的地理位置. 方法一:gps转换成google或者百度坐标,转换gps的接口 h

基于百度地图的android地理位置获取

通过手机获取GPS信息,然后把利用GPS经纬度查询相应的地理位置信息. 1.利用android自带API实现,经过测试基本没有结果.留作参考.关键代码如下: Geocoder geocoder=new Geocoder(GotoMyLocationActivity.this); // Geocoder geocoder = new Geocoder(this, Locale.CHINA); try { //Thread.sleep(2000); places = geocoder.getFrom

高德SDK获取到的坐标转换为GPS真实坐标方法,Java版

发现高德SDK不提供高德的左边转GPS坐标(GCJ_02转WGS_84),下面是一份Java版的 /**************************** 文件名:GCJ2WGS.java 创建时间: 所在包:com 作者: 说明:该类的delta方法可以将高德地图SDK获取到的GPS经纬度转换为真实的经纬度. ****************************/ package com; import java.util.HashMap; public class GCJ2WGS {

android基站定位程序获取地理位置

目录 一.设置界面 二.为按钮绑定事件 三.获取基站信息 四.获取经纬度 五.获取物理位置 六.显示结果 七.运行程序 八.总结 九.程序代码 正文 在Android操作系统下,基站定位其实很简单,先说一下实现流程: 调用SDK中的API(TelephonyManager)获得MCC.MNC.LAC.CID等信息,然后通过google的API获得所在位置的经纬度,最后再通过google map的API获得实际的地理位置.(google真牛!) 有同学会问:MNC.MCC.LAC.CID都是些什么

用Xposed框架拦截微信、人人、QQ等LBS应用的当前位置

最近在参加第八届全国大学生信息安全竞赛,成功杀入决赛.本人负责核心模块的hook,hook的实现还是用开源框架Xposed.其中的一个需求就是保护用户的敏感数据:当前位置信息.前期做了很多尝试都失败了,这里换一种角度思考,顿时眼前一亮.呵呵,不在这里扯淡了,开始进入正题. LBS应用的定位原理 经常用微信.人人的用户会发现,这一类客户端有个比较有意思的功能,就是在你发状态的时候可以添加自己的位置,可以查找"附近的人",而且定位得相对比较准确.即使不开启手机的GPS服务,它可以定位,用W