objective-c开发——地图定位之地理编码和地理反编码

我们平时做地图定位,主要是靠经纬度来准确定位某个位置。

但是,我们是人啊,我们不是卫星啊。

用户在地图上查一个地方,我们总不能告诉他,这个地方是东经多少度,北纬多少度吧。

咱们好歹得告诉人家个地名不是?

这就是我们今天说的地理编码和地理反编码。

地理编码:你说个地名,比如“西湖”,我们给你返回它的经纬度,然后你通过查出来的这个经纬度去定位

反地理编码:我告诉你一个经纬度,你通过经度纬度返回地名。最好在插个大头针在地图上就更好了,啥叫大头针,咱们以后再说。

首先,我的界面是这个样纸的,就是两个按钮,拖线,生成两个方法

源代码如下

//

//  ViewController.m

//  Demo3_反地理编码

//

//  Created by shiran on 16/3/23.

//  Copyright © 2016年 shiran. All rights reserved.

//

#import "ViewController.h"

#import <CoreLocation/CoreLocation.h>

@interface ViewController ()

//地理编码

@property(nonatomic,strong)CLGeocoder *geocoder;

@end

@implementation ViewController

-(CLGeocoder *)geocoder{

if (!_geocoder) {

_geocoder=[[CLGeocoder alloc]init];

}

return _geocoder;

}

//地理编码

- (IBAction)geocoder:(UIButton *)sender {

NSString *address=@"西湖";

if (address.length==0) {

return;

}

[self.geocoder geocodeAddressString:address completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

if (error==nil) {

for (CLPlacemark *placeMark in placemarks) {

NSLog(@"%@",placeMark.addressDictionary[@"City"]);

NSLog(@"%f,%f",placeMark.location.coordinate.latitude,placeMark.location.coordinate.longitude);

}

}

else

{

NSLog(@"%@",error);

}

}];

}

//反地理编码

- (IBAction)reverseGeocoder:(UIButton *)sender {

CLLocation *loc = [[CLLocation alloc]initWithLatitude:40 longitude:116];

[self.geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

if (error==nil) {

for (CLPlacemark *placemark in placemarks) {

NSLog(@"%@,%@",placemark.addressDictionary[@"City"],placemark.name);

}

}

}];

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

点击 地理编码 按钮,控制台输出如下 ,因为我的模拟器是英文的,所以控制台打印也是英文的,就这么洋气^_^

看,南昌的经纬度和杭州的经纬度都出来了,看来不止杭州有个西湖,南昌也有西湖啊,长姿势吧^_^

点击 反地理编码 按钮,控制台输出如下

这里,根据我的经纬度返回的地址是北京门头沟

时间: 2024-11-08 18:15:39

objective-c开发——地图定位之地理编码和地理反编码的相关文章

iOS 开发之定位与苹果地图

1.LBS开发 需求: 社交类应用 ,  购物类 ,  旅游类... 功能: 定位.地图 官方提供:定位与地图(国内使用的高德的数据) 第三方:高德,百度,搜搜,腾讯,谷歌地图... 2.地理定位 2.1 库的配置 /*****地图定位*****/ //LBS --> Location Based Service //1.配置库 --> CoreLocation.framework (系统的) // --> #import <CoreLocation/CoreLocation.h&

iOS开发--地图与定位

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用 和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒 店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开 发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要 实现地图.导航功能,往往需要先熟悉定位功能

iOS陆哥开发笔记(五) (地图定位之官方API)

定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用.在Core Location中主要包含了定位.地理编码(包括反编码)功能. 定位功能 定位是一个很常用的功能,如一些地图软件打开之后如果用户允许软件定位的话,那么打开软件后就会自动锁定到当前位置,如果用户手机移动那么当前位置也会跟随着变化.要实现这个功能需要使用Core

iOS学习_地图_定位和编码与反编码

定位: 引入头文件  #import <CoreLocation/CoreLocation.h>声明管理器属性:@property(nonatomic,strong)CLLocationManager *manager;第一步:初始化管理器self.manager = [[CLLocationManager alloc] init];第二步:进行隐私的判断并授权 //进行隐私的判断 if (![CLLocationManager locationServicesEnabled]) { NSLo

位置与地图:几种位置反编码方式

位置反编码的基本概念 位置的编码就是将经纬度转换为具体的位置信息 ios5.0之后使用CLGeocoder类,用于反编码处理;ios5之前则使用MKReverseGeoCoder类进行反编码处理 1.CLGeocoder位置反编码 //-------------------CLGeocoder位置反编码 - 5.0之后使用------------------------- CLGeocoder *geocoder = [[CLGeocoder alloc]init]; [geocoder rev

iOS定位服务与地图开发(2)---地理信息反编码

上节我们通过定位获取了经度和纬度数值,但是一般人很难看懂这些数字. 地理信息反编码:就是根据这些经纬数字返回地点的相关文字描述信息,这些文字描述信息被封装在CLPlacemark类中,我们称这个类为"地标"类. 地理信息反编码使用CLGeocoder类实现,这个类能够实现在地理坐标与地理文字描述信息之间的转换. CLGeocoder类中进行地理信息反编码的方法是:reverseGeocodeLocation: completionHandler: location:是要定位的地理位置对

ios开发之定位和苹果地图

ios开发之定位和苹果地图 1. LBS开发简介 需求:社交类(微信 QQ)     附件的人 购物应用  显示商家位置 (美团 大众点评) 旅游类应用(去哪儿 携程)  显示当前位置周边酒店 餐馆 功能 :定位 (获取当前位置的地图) 地图(显示某个区域的地图) 实现: 苹果:定位功能和地图功能(国内使用高德的数据) 高德地图 百度地图 搜搜地图 腾讯地图 谷歌地图... 2.地理定位 1.库的配置 2.定位功能 3方向 3.地址编码和反编码 1 地址编码 获取经纬度 确定地理位置 2 地址反

地图定位CoreLocation框架,地理位置编码与反编码

在现代互联网时代,越来越多的应用,都用到了地图定位功能,在iOS开发中,想要加入这种功能,必须基于两个框架进行开发: 1.Map Kit:用于显示地图, 2.CoreLocation:用于显示地理位置 这里我们简单了解一下CoreLocation,用于显示地理位置,坐标信息. 一.相关类介绍 CLLocationManager.用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向. CLLocation.封装了位置和高度信息. CLL

项目开发--------地图与定位功能

一.定位. 1.定位功能 : 定位是一个很常用的功能,如一些地图软件打开之后如果用户允许软件定位的话,那么打开软件后就会自动锁定到当前位置,如果用户手机移动那么当前位置也会跟随着变化.要实现这个功能需要使用Core Loaction中CLLocationManager类. 相关方法:(在前面的方法和属性属于较为常用和重要的) 示例代码: //地理定位----------------------------------------------- - (void)viewDidLoad { [sup