第三方库地图定位技术点

MapKit框架学习

2016-01-22  本文已影响770人  JoyceZhao

pragma mark - Events

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

// 1. 获取手指所在的点
CGPoint touch = [[touches anyObject] locationInView:self.mapView];

// 2. 把点转化为经纬度
CLLocationCoordinate2D coordinate = [self.mapView convertPoint:touch toCoordinateFromView:self.mapView];

// 3. 添加大头针数据模型
ZQAnnotationItem *annotationItem = [self addAnnotationItemWithCoordinate:coordinate title:@"小码哥" subTitle:@"iOS"];

// 4. 反地理编码
CLLocation *location = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude];
[self.geoCoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

    if (error == nil) {

        // 从地标数组中获取地标对象
        CLPlacemark *placemark = [placemarks firstObject];

        // 设置弹框标题
        annotationItem.title = placemark.name;

        // 设置弹框子标题
        annotationItem.subtitle = placemark.locality;
    }

}];

}
#pragma mark ------------------
#pragma mark - Methods
-(ZQAnnotationItem *)addAnnotationItemWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title subTitle:(NSString *)subTitle{

    // 创建大头针数据模型对象
    ZQAnnotationItem *annotationItem = [[ZQAnnotationItem alloc] init];

    // 设置数据
    annotationItem.coordinate = coordinate;
    annotationItem.title = title;
    annotationItem.subtitle = subTitle;

    // 添加大头针数据模型
    [self.mapView addAnnotation:annotationItem];

    return annotationItem;
}
        ```
* 知识点
    * 获取手指所在的点
    * 把点转化为经纬度
    * 反地理编码
上一篇 下一篇

猜你喜欢

热点阅读