ArcGIS直接提供了地理检索api,但是这个功能需要依托后台服务发布GeocodeServer服务
__weak __typeof(self)weakSelf = self;
if (!self.locatorTask) {
self.locatorTask = [[AGSLocatorTask alloc] initWithURL:[NSURL URLWithString:@"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"]];
}
if (!self.geoParams) {
self.geoParams = [[AGSGeocodeParameters alloc] init];
self.geoParams.resultAttributeNames = @[@"*"];
self.geoParams.minScore = 75;//匹配度
// self.geoParams.outputSpatialReference = self.mapView.spatialReference;
// self.geoParams.preferredSearchLocation = AGSPointMake(530381, 392550, self.mapView.spatialReference);
// self.geoParams.searchArea = self.dynamicLayer.fullExtent;
}
[self.locatorTask loadWithCompletion:^(NSError * _Nullable error) {
if (!error) {
[weakSelf.locatorTask geocodeWithSearchText:@"Disneyland" parameters:weakSelf.geoParams completion:^(NSArray<AGSGeocodeResult *> * _Nullable geocodeResults, NSError * _Nullable error) {
}];
}
}];
该API还是比较浅显的,使用比较方便。
其实官方给出了一份开源的详细使用代码,还发布到了AppStore,git直达:https://github.com/Esri/arcgis-runtime-samples-ios,大家可以自行下载过来参考,只不过是swift版本的。