您现在的位置:

地理/逆地理编码

地理编码

1. 导入头文件

                            #import <NavinfoKit/NavinfoKit.h>
                        

2. 配置APIKEY

参考工程配置说明

3. 定义 NavinfoGeocodeSearch

定义地理与逆地理编码搜索对象 NavinfoGeocodeSearch,并继承搜索协议<NavinfoGeocodeSearchDelegate >。

4. 构造 NavinfoGeocodeSearch

构造地理与逆地理编码搜索对象 NavinfoGeocodeSearch

                            _geocoder = [NavinfoGeocodeSearch new];
                            _geocoder.delegate = self;
                            

5. 设置地理编码搜索查询参数

地理编码查询的请求参数类为NavinfoGeocodeQuery,formattedAddress(格式化地址)为必填写参数,规则遵循:国家、省份、城市、区县、城镇、乡村、街道、门牌号码、屋邨、大厦。如:北京市东直门南大街 10号;cityName(城市名称)搜索行政区域的 adcode/名称,默认 110000; 其它非必要参数请参考API文档。

                            NavinfoGeocodeQuery *query = [[NavinfoGeocodeQuery alloc] init];
                            query.formattedAddress = @"腾飞软件园区汇贤园1号";
                            query.cityName = @"大连";
                        

6. 发起搜索查询参数

通过调用 NavinfoGeocodeSearch的 geocodeWithQuery方法发起搜索请求。

                            [_geocoder geocodeWithQuery:query];
                        

7. 在回调中处理数据

当查询成功时,代理方法。

                            - (void)onGeocodeSearch:(NavinfoGeocodeSearch * _Nonnull)geocoder geocodeResult:(NavinfoGeocodeResult * _Nonnull)result;
                        

其中NavinfoGeocodeResult返回此时可获取查询结果。

说明:

1) 通过 geocoder 获取地理、逆地理编码实例。

2) 通过 result.geoInfo 获取地理编码信息。

                            - (void)onGeocodeSearch:(NavinfoGeocodeSearch *)geocoder geocodeResult:(NavinfoGeocodeResult *)result {
                                NSLog(@"----> geocoderesult: lonlat=%@, score=%f", [NavinfoLonlat toSringWithLonlats:@[result.geoInfo.lonlat]], result.geoInfo.score);
                            }
                    

8. 处理失败查询

当检索失败时,Error 会返回,通过该回调函数获取产生的失败的原因。

                        - (void)onGeocodeSearch:(NavinfoGeocodeSearch * _Nonnull)geocoder error:(NSError * _Nonnull)error;
                    

其中Error 会返回,通过该回调函数获取产生的失败的原因。

                        - (void)onGeocodeSearch:(NavinfoGeocodeSearch *)geocoder error:(NSError *)error {
                            NSLog(@"----> error");
                        }
                    

逆地理编码

1. 导入头文件

                    #import <NavinfoKit/NavinfoKit.h>
                

2. 配置APIKEY

参考工程配置说明

3. 定义 NavinfoGeocodeSearch

定义地理与逆地理编码搜索对象 NavinfoGeocodeSearch,并继承搜索协议<NavinfoGeocodeSearchDelegate >。

4. 构造 NavinfoGeocodeSearch

构造地理与逆地理编码搜索对象 NavinfoGeocodeSearch,并设置代理。

                            _geocoder = [NavinfoGeocodeSearch new];
                            _geocoder.delegate = self;
                            

5. 设置逆地理编码搜索查询参数

地理编码查询的请求参数类为 NavinfoReGeocodeQuery,lonlats(经纬度坐标集合)为必填写参数,最大支持 10 组坐标,超出部分不作处理;requirePOI(是否召回附近的POI信息) 非必填参数;requireRoad(是否召回附近的道路信息) 非必填参数;其它非必要参数请参考API文档。

                        NavinfoReGeocodeQuery *query = [NavinfoReGeocodeQuery new];
                        NavinfoLonlat *lonlat1 = [[NavinfoLonlat alloc] initWith:11648149 latitude:3999046 gbType: NavinfoGbTypeG02];
                        query.lonlats = @[lonlat1];
                        query.requirePOI = YES;
                        query.requireRoad = YES;
                    

6. 发起搜索查询参数

通过调用 NavinfoGeocodeSearch的 reverseGeocodeWithQuery方法发起搜索请求。

                            [_geocoder reverseGeocodeWithQuery:query];
                        

7. 在回调中处理数据

当查询成功时,代理方法

                            - (void)onGeocodeSearch:(NavinfoGeocodeSearch * _Nonnull)geocoder geocodeResult:(NavinfoGeocodeResult * _Nonnull)result;
                        

其中NavinfoGeocodeResult返回此时可获取查询结果。

                    - (void)onGeocodeSearch:(NavinfoGeocodeSearch *)geocoder geocodeResult:(NavinfoGeocodeResult *)result {
                        NSLog(@"----> geocoderesult: lonlat=%@, score=%f", [NavinfoLonlat toSringWithLonlats:@[result.geoInfo.lonlat]], result.geoInfo.score);
                    }
                

说明:

1) 通过 geocoder 获取地理、逆地理编码实例。

2) 通过 result.lonlat 获取经纬度信息。

3) 通过 result.formattedAddress 获取格式化地址信息。

4) 通过 result.address 获取 NavinfoAddressInfo 详细地址集合。

5) 通过 result.roads 获取 NavinfoRoadInfo 附近道路信息集合。

6) 通过 result.pois 获取 NavinfoPOI 附近POI信息集合。

                    - (void)onGeocodeSearch:(NavinfoGeocodeSearch *)geocoder reGeocodeResult:(NavinfoReverseGeocodeResult *)result {
                        NSLog(@"----> reGeocodeResult");
                        if (result.lonlat) {
                            NSString *lonlatStr = result.lonlat.lonlatString;
                            NSString *fAddress = result.formattedAddress;
                            NSString *adCountry = result.address.country;
                            NSString *adProvince = result.address.province;
                            NSString *adCity = result.address.city;
                            NSString *adAdcode = result.address.adcode;
                            NSLog(@"----> reGeocodeResult: lonlat=%@, formattedAddress=%@, adCountry=%@, adProvince=%@, adCity=%@, adAdcode=%@",
                            lonlatStr, fAddress, adCountry, adProvince, adCity, adAdcode);
                            
                            if (result.roads) {
                                NSArray *roads = result.roads;
                                for (NSInteger i = 0; i < [roads count]; i++) {
                                    NavinfoRoadInfo *roadInfo = roads[i];
                                    NSString *roadName = roadInfo.name;
                                    NSString *distance = roadInfo.distance;
                                    NSString *direction = roadInfo.direction;
                                    NSString *lonlatSrt = roadInfo.lonlat.lonlatString;
                                    NSLog(@"----> reGeocodeResult.roadInfo: roadName=%@, distance=%@, direction=%@, lonlatSrt=%@", roadName, 
                                    distance, direction, lonlatSrt);
                                }
                            }
                            
                            if (result.pois) {
                                NSArray *pois = result.pois;
                                for (NSInteger i = 0; i < [pois count]; i++) {
                                    NavinfoPOI *poiInfo = pois[i];
                                    NSString *pId = poiInfo.poiId;
                                    NSString *name = poiInfo.name;
                                    NSString *type = poiInfo.type;
                                    NSString *distance = poiInfo.distance;
                                    NSString *direction = poiInfo.direction;
                                    NSString *address = poiInfo.address;
                                    NSString *lonlatStr = poiInfo.lonlat.lonlatString;
                                    NSLog(@"----> reGeocodeResult.poiInfo: pId=%@, name=%@, type=%@, distance=%@, direction=%@, address=%@, 
                                    lonlatStr=%@", pId, name, type, distance, direction, address, lonlatStr);
                                }
                            }
                        }
                    }
            

8. 处理失败查询

当检索失败时,Error 会返回,通过该回调函数获取产生的失败的原因。

                            - (void)onGeocodeSearch:(NavinfoGeocodeSearch * _Nonnull)geocoder error:(NSError * _Nonnull)error;
                    

其中Error 会返回,通过该回调函数获取产生的失败的原因。

                            - (void)onGeocodeSearch:(NavinfoGeocodeSearch *)geocoder error:(NSError *)error {
                                NSLog(@"----> error");
                            }
                    
返回顶部