做了将近半年的ios开发,因为一直忙于实现各种功能,都没时间来记录在工作中遇到的问题,现在工作量满满少下来,终于有时间来记录一些编程中的疑难杂症了.
首先来说下AMapSearchKit,这是一个很郁闷的东西,当初用高德做定位的时候,把2.6的sdk包全部下载下来了,包括AMapSearchKit,然后这个包一直没用到,现在做poi功能的时候,使用了这个功能,然后就开始了一系列头疼事情。http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=7346&page=1#pid27882这是我高德论坛里问高德技术的帖子。
这是高德定位sdk的下载地址: http://lbs.amap.com/api/ios-sdk/down/
网上有很多关于xcode运行的时候说frame找不到AMapSearchKit,有各种解决办法,什么删掉AMapSearchKit,再关掉xcode,再清理driveData,再导入AMapSearchKit,还有些朋友是amap.bundle就够了,不需要AMapSearchKit,后来我把原本的删掉,再从官网上下载一个导入,清理后编译就成功了。对于这个结果,我也是醉了。后来我把代码上传到svn,搭档去更新代码的时候,在他那边又出现了找不到AMapSearchKit的问题,之前因为没有做记录,所以我忘掉了是怎么解决这个问题的,后来又一遍遍的尝试,又通过重新下载AMapSearchKit解决了。也就是说上传到svn可能损坏了文件。
接下来记录下实现的过程,
1、设置开启定位,成功后调用回调函数:
(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
//在这里获取到经纬度,然后把经纬度,你应用在高德上注册的key上传到高德的服务器,然后返回校正后的经纬度
NSDictionary* params = @{@"locations":[NSString stringWithFormat:@"%f,%f",lo,la],@"coordsys":@"gps",@"key":@"4872cd7c4e2*******5af9a432c4ef"};
AFHTTPClient* client = [[AFHTTPClient alloc]initWithBaseURL:[NSURL URLWithString:Urladdr]] ;
NSURLRequest* request = [client requestWithMethod:@"POST" path:@"http://restapi.amap.com/v3/assistant/coordinate/convert" parameters:params];
search = [[AMapSearchAPI alloc] initWithSearchKey:@"d2b556cd25f4007cd7419e36aa3a0b87" Delegate:self];
search.delegate = self;
//构造AMapReGeocodeSearchRequest对象,location为必选项,radius为可选项
AMapReGeocodeSearchRequest *regeoRequest = [[AMapReGeocodeSearchRequest alloc] init];
regeoRequest.searchType = AMapSearchType_ReGeocode;
regeoRequest.location = [AMapGeoPoint locationWithLatitude:la longitude:lo ];
regeoRequest.radius = 1000;
regeoRequest.requireExtension = YES;
//发起逆地理编码
[search AMapReGoecodeSearch: regeoRequest];
}
这是开启逆地理编码后的回调函数
(void)onReGeocodeSearchDone:(AMapReGeocodeSearchRequest *)request response:(AMapReGeocodeSearchResponse *)response{
//根据response.regeocode 处理,获取你想得到的数据
}