iOS CLGeocoder(地图解析)~demo
来源:互联网 发布:windows aero 用不了 编辑:程序博客网 时间:2024/06/06 07:51
//联系人:石虎 QQ: 1224614774昵称:嗡嘛呢叭咪哄
/**
注意点: 1.看 GIF 效果图.
2.看连线视图的效果图.
3.看实现代码(直接复制实现效果).
*/
一、GIF 效果图:
二、连线视图的效果图:
图1:
三、实现代码:
=========================
===================================================
==========================
/**
注意点: 在视图上面输入经纬度-->不能超出一下范围
1.纬度为 南纬90-0-北纬90
2.经度为 西经180-本出子午线(0度)-东经180
3.高德地图存在偏差,解析的经纬度不准确
4.UIAlertView(提示框)不能高于 iOS9.0,否则报黄
*/
控制器1:
//
// ViewController.m
// AddressResolution(地址解析)
//
// Created by 石虎 on 2017/7/5.
// Copyright © 2017年 shihu. All rights reserved.
//
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()
//地址输入框
@property (weak,nonatomic)IBOutletUITextField *addrField;
//经度
@property (weak,nonatomic)IBOutletUITextField *longitudeField;
//纬度
@property (weak,nonatomic)IBOutletUITextField *latitudeField;
//显示内容框
@property (weak,nonatomic)IBOutletUITextView *resultView;
//解析地址
- (IBAction)encodeTapped:(UIButton *)sender;
//反方向解析
- (IBAction)reverseTapped:(UIButton *)sender;
//地理编码
@property (strong,nonatomic)CLGeocoder *geocoder;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// 创建地址解析器
self.geocoder = [[CLGeocoderalloc]init];
}
#pragma mark -解析地址
- (IBAction)encodeTapped:(UIButton *)sender
{
//获取用户输入的地址字符串
NSString *addr =self.addrField.text;
if(addr !=nil && addr.length >0)
{
[self.geocodergeocodeAddressString:@"北京八维研修学院"
completionHandler: ^(NSArray *placemarks,NSError *error)
{
//如果解析结果的集合元素的个数大于1,表明解析得到了经度、纬度信息
if (placemarks.count >0)
{
//只处理第一个解析结果,实际项目中可使用列表让用户选择
CLPlacemark *placemark = placemarks[0];
CLLocation* location = placemark.location;
self.resultView.text = [NSStringstringWithFormat:
@"%@的经度为:%g,纬度为:%g" , addr ,
location.coordinate.longitude ,
location.coordinate.latitude ];
}else//没有得到解析结果。
{
// 使用UIAlertView提醒用户
[[[UIAlertViewalloc]initWithTitle:@"提醒"message:@"您输入的地址无法解析"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil]
show];
}
}];
}
}
#pragma mark -反方向解析
- (IBAction)reverseTapped:(UIButton *)sender
{
NSString* longitudeStr =self.longitudeField.text;
NSString* latitudeStr =self.latitudeField.text;
if(longitudeStr !=nil && longitudeStr.length >0
&& latitudeStr != nil && latitudeStr.length >0)
{
// 将用户输入的经度、纬度封装成CLLocation对象
CLLocation* location = [[CLLocationalloc]
initWithLatitude:[latitudeStrfloatValue]
longitude:[longitudeStrfloatValue]];
[self.geocoderreverseGeocodeLocation:locationcompletionHandler:
^(NSArray *placemarks,NSError *error)
{
//如果解析结果的集合元素的个数大于1,表明解析得到了经度、纬度信息
if (placemarks.count >0)
{
//只处理第一个解析结果,实际项目可使用列表让用户选择
CLPlacemark* placemark = placemarks[0];
// 获取详细地址信息
NSArray* addrArray = [placemark.addressDictionary
objectForKey:@"FormattedAddressLines"];
// 将详细地址拼接成一个字符串
NSMutableString* addr = [[NSMutableStringalloc]init];
for(int i =0 ; i < addrArray.count ; i ++)
{
[addr appendString:addrArray[i]];
}
self.resultView.text = [NSStringstringWithFormat:
@"经度:%g,纬度:%g的地址为:%@" ,
location.coordinate.longitude ,
location.coordinate.latitude , addr];
}else{//没有得到解析结果。
// 使用UIAlertView提醒用户
[[[UIAlertViewalloc]initWithTitle:@"提醒"message:@"您输入的地址无法解析"delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil]
show];
}
}];
}
}
@end
谢谢!!!
- iOS CLGeocoder(地图解析)~demo
- Oc CLGeocoder(地图解析)
- 简易地图(MKMapView,CLLocationManagerDelegate,CLGeocoder)
- iOS5地图使用MapKit,使用CLGeocoder解析,原来的MKReverseGeocoder过时不可用
- iOS百度地图 Demo
- iOS CLGeocoder 反向地理编码
- iOS LocateMap(地图定位)~demo
- CLGeocoder反解析用户的地址
- 定位经纬度解析城市信息 CLGeocoder /CLLocationManager
- iOS 百度地图 小功能demo
- iOS开发学习之地图demo
- iOS开发 地图MKMapView小Demo
- iOS swift 一个百度地图Demo
- iOS--高德地图聚合demo
- iOS MapAnchor(地图锚点~自定义)~demo
- ios hpple解析html demo
- iOS 架构模式Demo解析
- mono for ios/xamarin.ios 绑定 百度地图 SDK demo
- Qt一步步搭建TcpServer0——序
- webpack 各种babel 转码
- 大话设计模式笔记(七)——模版方法模型
- ODBC与JDBC
- hdu 多校 RXD and dividing
- iOS CLGeocoder(地图解析)~demo
- 在js中如何打印菱形
- 1017. A除以B (20)
- MOS管防止电源反接的原理
- 字符串模板
- 冒泡排序
- zoj3960
- BP神经网络入门级简介
- CentOS7使用firewalld打开关闭防火墙与端口