地址编码

地理编码指的是将地址信息建立空间坐标关系的过程。又可分为正向地理编码和反向地理编码。

1.地理编码(即地址转坐标)

地理编码,又称为地址匹配,是从已知的地址描述到对应的经纬度坐标的转换过程。该功能适用于根据用户输入的地址确认用户具体位置的场景,常用于配送人员根据用户输入的具体地址找地点。

地址的定义: 首先,地址肯定是一串字符,内含国家、省份、城市、城镇、乡村、街道、门牌号码、屋邨、大厦等建筑物名称。按照由大区域名称到小区域名称组合在一起的字符。一个有效的地址应该是独一无二的。注意:针对大陆、港、澳地区的地理编码转换时可以将国家信息选择性的忽略,但省、市、城镇等级别的地址构成是不能忽略的。

注意:不要将该功能与POI关键字搜索混用。

  • POI关键字搜索,是根据关键词找到现实中存在的地物点(POI)。
  • 地理编码是依据当前输入,根据标准化的地址结构(省/市/区或县/乡/村或社区/商圈/街道/门牌号/POI)进行各个地址级别的匹配,以确认输入地址对应的地理坐标,只有返回的地理坐标匹配的级别为POI,才会对应一个具体的地物(POI)。

(1)构造 FMGeoCodeSearch 对象,并设置代理。 FMGeoCodeSearch 对象的构造需要根据 http://map.botaisoft.com/apis 初始化。

// 初始化编码对象,并设置代理
FMGeoCodeSearch *search = [[FMGeoCodeSearch alloc] initWithBaseUrl:http://map.botaisoft.com/apis];
search.delegate = self;

(2)设置地理编码查询参数,构造 FMGeoCodeLocationSearchOption 对象。其中 FMGeoCodeLocationSearchOption 对象的 cityNameaddress 是必设参数,不能为空。然后进行地理位置检索。

// 请求参数类 FMGeoCodeLocationSearchOption
FMGeoCodeLocationSearchOption *option = [[FMGeoCodeLocationSearchOption alloc] init];
option.cityName = self.cityField.text;
option.address = self.addressField.text;

// 发起地理位置检索
BOOL flag = [search geoCode:option];
if(flag)
{
    NSLog(@"geo检索发送成功");
}
else
{
    NSLog(@"geo检索发送失败");
}

(3)在回调中处理数据,当检索成功时,会进到 onGetGeoCodeResult 回调函数中,通过解析 searchResult 对象把检索结果在地图上绘制点展示出来。

- (void)onGetGeoCodeResult:(FMGeoCodeSearch *)searcher result:(FMGeoCodeSearchResult *)searchResult errorCode:(FMGeoCodeSearchErrorCode)errorCode
{
}

2.逆地理编码(即坐标转地址)

逆地理编码,又称地址解析服务,是指从已知的经纬度坐标到对应的地址描述(如行政区划、街区、楼层、房间等)的转换。常用于根据定位的坐标来获取该地点的位置详细信息,与定位功能是黄金搭档。

(1)构造 FMGeoCodeSearch 对象,并设置代理。 FMGeoCodeSearch 对象的构造需要根据 http://map.botaisoft.com/apis 初始化。

// 初始化编码对象,并设置代理
FMGeoCodeSearch *search = [[FMGeoCodeSearch alloc] initWithBaseUrl:http://map.botaisoft.com/apis];
search.delegate = self;

(2)设置地理编码查询参数,构造 FMReverseGeoCodeLocationSearchOption 对象。其中 FMReverseGeoCodeLocationSearchOption 对象的 location 是必设参数,不能为空。然后进行反向地理编码检索。

// 请求参数类 FMReverseGeoCodeLocationSearchOption
FMReverseGeoCodeLocationSearchOption *option = [[FMReverseGeoCodeLocationSearchOption alloc] init];
option.location = CLLocationCoordinate2DMake([self.latField.text floatValue], [self.lonField.text floatValue]);
// 发起反向地理编码检索
BOOL flag = [search reverseGeoCode:option];
if(flag)
{
    NSLog(@"反geo检索发送成功");
}
else
{
    NSLog(@"反geo检索发送失败");
}

(3)在回调中处理数据,当检索成功时,会进到 onGetReverseGeoCodeResult回调函数中,通过解析 searchResult 对象把检索结果在地图上绘制点展示出来。

- (void)onGetReverseGeoCodeResult:(FMGeoCodeSearch *)searcher result:(FMReverseGeoCodeSearchResult *)searchResult errorCode:(FMGeoCodeSearchErrorCode)errorCode
{
}

results matching ""

    No results matching ""