自定义位置反编码的用法
来源:互联网 发布:js调用api接口实例 编辑:程序博客网 时间:2024/06/05 02:39
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@interface WXPlaceMark :NSObject
@property(nonatomic,copy)NSString *name; //完整地址
@property(nonatomic,copy)NSString *country; //国家
@property(nonatomic,copy)NSString *province; //省
@property(nonatomic,copy)NSString *locality; //市
@property(nonatomic,copy)NSString *sublocality;//县、区
@property(nonatomic,copy)NSString *route; //街道、路
@property(nonatomic,copy)NSString *streetNumber; //门牌号
@property(nonatomic,copy)NSString *postalCode; //邮政编码
@end
typedefvoid(^WXGeocodeCompletionHandler)(WXPlaceMark *placeMark,NSError *error);
@interface WXGeocoder :NSObject
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(WXGeocodeCompletionHandler)completionHandler;
@end
#import "WXGeocoder.h"
@implementation WXPlaceMark
- (void)dealloc
{
[superdealloc];
[_namerelease];
//...
}
@end
@implementation WXGeocoder
//http://maps.googleapis.com/maps/api/geocode/json?latlng=39.904299,116.22169&sensor=true
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(WXGeocodeCompletionHandler)completionHandler {
double latitude = location.coordinate.latitude;
double longitude = location.coordinate.longitude;
NSString *urlstring = [NSStringstringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&sensor=true",latitude,longitude];
NSURL *url = [NSURLURLWithString:urlstring];
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];
[requestsetHTTPMethod:@"GET"];
[request setTimeoutInterval:60];
NSOperationQueue *queue = [[NSOperationQueuealloc] init];
[NSURLConnectionsendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError) {
id result = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableContainerserror:nil];
WXPlaceMark *place = [self_parseData:result];
//回到主线程
dispatch_async(dispatch_get_main_queue(), ^{
//回调block
completionHandler(place,connectionError);
});
}];
}
- (WXPlaceMark *)_parseData:(NSDictionary *)jsonData {
NSArray *resultsArray = [jsonData objectForKey:@"results"];
if (resultsArray.count ==0) {
return nil;
}
WXPlaceMark *place = [[WXPlaceMarkalloc] init];
NSDictionary *placeDic = [resultsArray objectAtIndex:0];
//详细完整地址
NSString *name = [placeDic objectForKey:@"formatted_address"];
place.name = name;
NSArray *components = [placeDic objectForKey:@"address_components"];
for (NSDictionary *componentin components) {
NSArray *types = [component objectForKey:@"types"];
if (types.count ==0) {
continue;
}
NSString *type = [types objectAtIndex:0];
if ([@"country"isEqualToString:type]) {
//国家
place.country = [componentobjectForKey:@"long_name"];
}
elseif([type isEqualToString:@"administrative_area_level_1"]) {
//省、市
place.province = [componentobjectForKey:@"long_name"];
}
else if([typeisEqualToString:@"locality"]) {
//市
place.locality = [componentobjectForKey:@"long_name"];
}
else if([typeisEqualToString:@"sublocality"]) {
//区、县
place.sublocality = [componentobjectForKey:@"long_name"];
}
else if([typeisEqualToString:@"route"]) {
//街道
place.route = [componentobjectForKey:@"long_name"];
}
else if([typeisEqualToString:@"street_number"]) {
//门牌号
place.streetNumber = [componentobjectForKey:@"long_name"];
}
else if([typeisEqualToString:@"postal_code"]) {
//邮政编号
place.postalCode = [componentobjectForKey:@"long_name"];
}
}
return [place autorelease];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation {
WXGeocoder *geo = [[WXGeocoderalloc] init];
[georeverseGeocodeLocation:newLocation completionHandler:^(WXPlaceMark *placeMark,NSError *error) {
NSLog(@"%@",placeMark.name);
}];
[manager stopUpdatingLocation];
}
- 自定义位置反编码的用法
- 定位获取位置及位置编码-反编码
- 位置反编码(忘记时看看)
- 位置与地图:几种位置反编码方式
- 位置与地图(一)定位获取位置及位置编码-反编码
- 学习iOS开发之位置坐标反编码
- server.urlencode的反编码
- 地理反编码的实现
- java 哈夫曼编码反编码的实现
- URI的编码与反编码
- iOS百度地图的定位,反编码出当前详细位置(最新版百度地图3.3.0)
- 自定义aspnet_client的位置
- 地理编码(根据地址得出位置并且加上自定义的大头针)
- java反斜杠\的用法
- java反斜杠\的用法
- ios 定位经纬度获取位置信息,地理位置编码与反编码
- 重新梳理一下自定义Toast的用法,设置想要的位置,自定义宽和高,自定义显示时间等
- iOS反地理编码的坑
- Android4.0中Contacts通话记录界面剖析(源码)
- 2014市场预测:大数据让企业获得“大智能”
- 线段树模板(二)——成段更新 + POJ 3468 A Simple Problem with Integers
- python下的MySQLdb使用
- PC浏览器安装vlc插件播放rtsp流
- 自定义位置反编码的用法
- 消息称即刻搜索即将关闭
- 修改Linux SSH默认22端口的几种方法
- ARM处理器NEON编程及优化技巧—左移右移等移位操作
- Epoll模型详解
- bean(2)
- openlldp-0.4alpha实现详解(三)——lldp_linux_framer模块
- python操作MySQL数据库
- 广州传智播客.Net培训教学特色