地理编码

1、使用CLGeocoder可以完成“地理编码”和“反地理编码”

(1)地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等)

(2)反地理编码:根据给定的经纬度,获得具体的位置信息

2、地理编码方法

(1)编码

- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;

(2)反编码

- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler;

3、CLGeocodeCompletionHandler

(1)当地理\反地理编码完成时,就会调用CLGeocodeCompletionHandler

  typedef void (^CLGeocodeCompletionHandler)(NSArray *placemarks, NSError *error);

(2)这个block传递2个参数

  error :当编码出错时(比如编码不出具体的信息)有值

  placemarks :里面装着CLPlacemark对象

4、CLPlacemark的字面意思是地标,封装详细的地址位置信息

(1)地理位置

@property (nonatomic, readonly) CLLocation *location;

(2)区域

@property (nonatomic, readonly) CLRegion *region;

(3)详细的地址信息

@property (nonatomic, readonly) NSDictionary *addressDictionary;

(4)地址名称

@property (nonatomic, readonly) NSString *name;

(5)城市

@property (nonatomic, readonly) NSString *locality;

5、示例代码

#import "ViewController.h"

#import <CoreLocation/CoreLocation.h>

@interface ViewController ()

@property (nonatomic, strong) CLGeocoder *geocode;

@end

@implementation ViewController

#pragma mark - 懒加载

- (CLGeocoder *)geocode {

    if (!_geocode) {

        _geocode = [[CLGeocoder alloc]init];

    }

    return _geocode;

}

- (IBAction)geoCodeClick:(UIButton *)sender {
 //北京  经纬度

    [self.geocode geocodeAddressString:@"东莞" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

        //地标

        CLPlacemark *pl =  [placemarks firstObject];

        //经纬度

        CLLocationCoordinate2D coordinate = pl.location.coordinate;

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

        for ( CLPlacemark *pl in placemarks) {

            NSLog(@"%@",pl.name);

        }

    }];

}

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

    CLLocation *loction = [[CLLocation alloc]initWithLatitude:23 longitude:118];

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

        //地址  字符串

        NSLog(@"%@",error);

        CLPlacemark *pl = [placemarks firstObject];

        NSLog(@"%@,%@",pl.name,pl.locality);    

    }];

}

@end
时间: 2024-10-12 17:34:39

地理编码的相关文章

ios百度地图逆地理编码(基于2.3.0--2.4.0SDK开发)

不得不说,现在的百度LBS部门是不是没人了啊,时不时的搞出来一些不好用得东西 要做百度的逆地理编码功能,肯定是要先启动百度服务了,这些就不再扯了.  BMKGeoCodeSearch *_geoCodeSearch = [[BMKGeoCodeSearch alloc]init];  _geoCodeSearch.delegate = self; BMKReverseGeoCodeOption *reverseGeoCodeOption= [[BMKReverseGeoCodeOption al

基于矢量数据的逆地理编码功能实现

地理编码和逆地理编码概述 地理编码,是指将大家熟悉的地址文字描述,转换为经纬度,如输入某某省.某某市.某某路,在地图上根据经纬度定位到输入的地图上的某个点,直观的显示所在位置.逆地理编码是指将经纬度转化为大家都能看懂文字描述.一般人对经纬度数字没什么概念,转化为文字描述后,更容易让人理解.在现在大量的人员定位,车辆监控中,除了在地图上直观的展示人员或者车辆的地图位置外,很多的系统也提供了人员或者车辆所在位置的文字描述功能. 目前大部分系统和项目开发中,逆地理编码功能的实现,都是调用主流厂商提供的

(七十七)地理编码与反地理编码

所谓地理编码,指的是通过地名获取位置信息,例如经纬度.详细地址等. 所谓反地理编码,指的是通过经纬度.海拔等信息获取地理位置信息. 在iOS上使用地理编码和反地理编码,如果是手动输入经纬度,是不需要获取用户授权的,但是一般是获取用户的经纬度,然后再通过地理编码实现精确定位,因此需要授权,本文因为是单独讲解地理编码的相关知识,因此采用手动输人经纬度,不再赘述授权的代码. ①导入框架: #import <CoreLocation/CoreLocation.h> ②新建CLGeocoder对象: @

arcgis server10.2.2之地理编码服务发布

1.地理编码工具(Geocoding Tools)locator制作     打开arcCatalog,找到工具箱ArcToolbox中的Geocoding Tools---Create Address Locator,界面如下: 2.locator已经制作完成,接下来就是发布地理编码服务 右键locator工具,选择Share as---Geocode Service,界面如下: 3.到这里,地理编码服务已经结束,最后是测试一下发布的服务是否成功 打开url:http://localhost:

iOS开发拓展篇—CoreLocation地理编码

iOS开发拓展篇—CoreLocation地理编码 一.简单说明 CLGeocoder:地理编码器,其中Geo是地理的英文单词Geography的简写. 1.使用CLGeocoder可以完成“地理编码”和“反地理编码” 地理编码:根据给定的地名,获得具体的位置信息(比如经纬度.地址的全称等) 反地理编码:根据给定的经纬度,获得具体的位置信息 (1)地理编码方法 - (void)geocodeAddressString:(NSString *)addressString completionHan

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

我们平时做地图定位,主要是靠经纬度来准确定位某个位置. 但是,我们是人啊,我们不是卫星啊. 用户在地图上查一个地方,我们总不能告诉他,这个地方是东经多少度,北纬多少度吧. 咱们好歹得告诉人家个地名不是? 这就是我们今天说的地理编码和地理反编码. 地理编码:你说个地名,比如“西湖”,我们给你返回它的经纬度,然后你通过查出来的这个经纬度去定位 反地理编码:我告诉你一个经纬度,你通过经度纬度返回地名.最好在插个大头针在地图上就更好了,啥叫大头针,咱们以后再说. 首先,我的界面是这个样纸的,就是两个按钮

地图开发-地理编码&amp;反地理编码

1.地理编码: 就是把一个'地名字符串'转化成’经纬度' [geocoder geocodeAddressString:<#(NSString *)#> completionHandler:<#^(NSArray *placemarks, NSError *error)completionHandler#>] 2.反地理编码: 是把'经纬度’转换成’地名字符串' [geocoder reverseGeocodeLocation:<#(CLLocation *)#> co

利用curl进行逆地理编码_c语言编写动态链接库对PostgreSQL进行扩展

流程: [1]c语言编写逆地理编码的函数,利用curl库和高德服务器进行地理坐标解析 [2]gcc生成动态链接库 [3]postgreSQL中加载动态链接库中的函数 [4]postgreSQL中将逆地理编码函数的返回类型进行转化 =========================================== [1]c语言编写逆地理编码的函数,利用curl库和高德服务器进行地理坐标解析 #include <stdio.h> #include <stdlib.h> #inclu

地理编码和反地理编码

一.基本概念 地理编码:根据给定的地名,获得具体的位置信息(比如经纬度.地址的全称等) 反地理编码:根据给定的经纬度,获得具体的位置信息 编码器CLGeocoder的每个实例,同时只能处理一个任务,异步执行. 二.基本方法 1. 地理编码方法   - (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler; 2. 反地理

地理编码与反地理编码

#import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //地理编码 [self geocoder:nil]; //反地理编码; } //没联网,没办法执行 -(void)geocoder