开启定位
// 配置用户Key
[MAMapServices sharedServices].apiKey = AmapKey;
// 创建地图
_mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
_mapView.delegate = self;
// 隐藏罗盘
_mapView.showsCompass = NO;
[self.view addSubview:_mapView];
// 定位
_mapView.showsUserLocation = YES;
// 设置定位模式
_mapView.userTrackingMode = MAUserTrackingModeFollow;
// 设置缩放比例
[_mapView setZoomLevel:16.1 animated:NO];
地图移动到某一坐标点
[_mapView setCenterCoordinate:_myCoordinate animated:YES];
设置我的位置显示的位置信息
// 设置气泡显示信息
_mapView.userLocation.title = @"sodded";
// 默认弹出气泡,显示位置信息
[_mapView selectAnnotation:_mapView.annotations[0] animated:YES];
逆地理编码
#import <AMapSearchKit/AMapSearchKit.h>
@interface ViewController ()<AMapSearchDelegate>
{
AMapSearchAPI *_search;
}
@end
-(void)viewDidLoad
{
//配置用户Key
[AMapSearchServices sharedServices].apiKey = @"用户Key";
//初始化检索对象
_search = [[AMapSearchAPI alloc] init];
_search.delegate = self;
//构造AMapReGeocodeSearchRequest对象
AMapReGeocodeSearchRequest *regeo = [[AMapReGeocodeSearchRequest alloc] init];
regeo.location = [AMapGeoPoint locationWithLatitude:39.990459 longitude:116.481476];
regeo.radius = 10000;
regeoRequest.requireExtension = YES;
//发起逆地理编码
[_search AMapReGoecodeSearch: regeo];
}
//实现逆地理编码的回调函数
- (void)onReGeocodeSearchDone:(AMapReGeocodeSearchRequest *)request response:(AMapReGeocodeSearchResponse *)response
{
if(response.regeocode != nil)
{
//通过AMapReGeocodeSearchResponse对象处理搜索结果
NSString *result = [NSString stringWithFormat:@"ReGeocode: %@", response.regeocode];
NSLog(@"ReGeo: %@", result);
}
}
周边搜索
#import <AMapSearchKit/AMapSearchKit.h>
@interface ViewController ()<AMapSearchDelegate>
{
AMapSearchAPI *_search;
}
@end
-(void)viewDidLoad
{
//配置用户Key
[AMapSearchServices sharedServices].apiKey = @"用户Key";
//初始化检索对象
_search = [[AMapSearchAPI alloc] init];
_search.delegate = self;
//构造AMapPOIAroundSearchRequest对象,设置周边请求参数
AMapPOIAroundSearchRequest *request = [[AMapPOIAroundSearchRequest alloc] init];
request.location = [AMapGeoPoint locationWithLatitude:39.990459 longitude:116.481476];
request.keywords = @"方恒";
// types属性表示限定搜索POI的类别,默认为:餐饮服务|商务住宅|生活服务
// POI的类型共分为20种大类别,分别为:
// 汽车服务|汽车销售|汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|
// 医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|
// 交通设施服务|金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施
request.types = @"餐饮服务|生活服务";
request.sortrule = 0;
request.requireExtension = YES;
//发起周边搜索
[_search AMapPOIAroundSearch: request];
}
//实现POI搜索对应的回调函数
- (void)onPOISearchDone:(AMapPOISearchBaseRequest *)request response:(AMapPOISearchResponse *)response
{
if(response.pois.count == 0)
{
return;
}
//通过 AMapPOISearchResponse 对象处理搜索结果
NSString *strCount = [NSString stringWithFormat:@"count: %d",response.count];
NSString *strSuggestion = [NSString stringWithFormat:@"Suggestion: %@", response.suggestion];
NSString *strPoi = @"";
for (AMapPOI *p in response.pois) {
strPoi = [NSString stringWithFormat:@"%@\nPOI: %@", strPoi, p.description];
}
NSString *result = [NSString stringWithFormat:@"%@ \n %@ \n %@", strCount, strSuggestion, strPoi];
NSLog(@"Place: %@", result);
}
自定义标注
1、实现<MAMapViewDelegate>代理
2、实现代理方法:
//返回自定义标注
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
{
if ([annotation isKindOfClass:[MAPointAnnotation class]])
{
static NSString *reuseIndetifier = @"annotationReuseIndetifier";
MAAnnotationView *annotationView = (MAAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseIndetifier];
if (annotationView == nil)
{
annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:reuseIndetifier];
}
//标注图片
annotationView.image = [UIImage imageNamed:@"160-pin-blue"];
//设置中心点偏移,使得标注底部中间点成为经纬度对应点
annotationView.centerOffset = CGPointMake(0, -24);
//设置气泡可以弹出,默认为NO
annotationView.canShowCallout= YES;
//设置标注可以拖动,默认为NO
annotationView.draggable = YES;
return annotationView;
}
return nil;
}
3、添加标注
MAPointAnnotation *pointAnnotation = [[MAPointAnnotation alloc] init];
pointAnnotation.coordinate = CLLocationCoordinate2DMake(39.989631, 116.481018);
pointAnnotation.title = @"方恒国际";
pointAnnotation.subtitle = @"阜通东大街6号";
[_mapView addAnnotation:pointAnnotation];
移除地图上所有标注
//移除所有标注
[_mapView removeAnnotations:_mapView.annotations];