相关疑难解决方法(0)

iOS MapKit拖动注释(MKAnnotationView)不再平移地图

我正在学习在我初出茅庐的iOS应用程序中使用MapKit.我正在使用我的一些模型实体作为注释(将<MKAnnotation>协议添加到其头文件中).我还创建自定义MKAnnotationViews并将draggable属性设置为YES.

我的模型对象有一个location属性,它是一个CLLocation*.为了符合<MKAnnotation>协议,我在该对象中添加了以下内容:

- (CLLocationCoordinate2D) coordinate {
    return self.location.coordinate;
}

- (void) setCoordinate:(CLLocationCoordinate2D)newCoordinate {
    CLLocation* newLocation = [[CLLocation alloc]
        initWithCoordinate: newCoordinate
        altitude: self.location.altitude
        horizontalAccuracy: self.location.horizontalAccuracy
        verticalAccuracy: self.location.verticalAccuracy
        timestamp: nil];
    self.location = newLocation;
}

- (NSString*) title {
    return self.name;
}

- (NSString*) subtitle {
    return self.serialID;
}
Run Code Online (Sandbox Code Playgroud)

所以,我有4个必需的方法.而且他们非常直截了当.当我阅读苹果文档MKAnnotationView@draggable财产时,它说如下:

将此属性设置为YES会使用户可以拖动注释.如果是,则关联的注释对象还必须实现setCoordinate:方法.此属性的默认值为NO.

在其他地方,MKAnnotation文档说:

您对此属性的实现必须符合键值观察(KVO).有关如何实现对KVO的支持的更多信息,请参阅键值观察编程指南.

我已经读过那篇(简短的)文件了,我根本不清楚我应该做些什么来实现这一目标,以便coordinate我从我的location财产中得到的是一个适当的财产本身.

但我有理由相信它不能正常工作.当我拖动它时,它会移动,但是当我平移地图时它不再重新定位.

UPDATE

所以我试着玩MKPinAnnotationView股票.为此,我只是注释了我的委托mapView:viewForAnnotation:方法.我发现默认情况下这些都不可拖动.我添加了mapView:didAddAnnotationViews:我的委托以设置 …

properties key-value-observing mapkit ios ios7

3
推荐指数
1
解决办法
4328
查看次数

如何通过Objective-C添加自定义图像以替换iOS MKMapView中的默认引脚?

到目前为止,我只有默认的MKMapView引脚工作.但我想要一个自定义图像来取代那个小红色别针.这就是我在下面的内容.我错过了什么?我想定义view.image会做的伎俩,但我猜不是.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:   
  (id<MKAnnotation>)annotation {
    MKPinAnnotationView *view = [[MKPinAnnotationView alloc]  
    initWithAnnotation:annotation reuseIdentifier:@"pin"];
    view.enabled = YES;
    view.animatesDrop = YES;
    view.canShowCallout = YES;
    view.image = [UIImage imageNamed:@"custom-pin-image.png"];

    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage         
     imageNamed:@"custom-image-for-annotation.png"]];
    view.leftCalloutAccessoryView = imageView;
    view.rightCalloutAccessoryView = [UIButton buttonWithType:  
     UIButtonTypeDetailDisclosure];

    return view;
}
Run Code Online (Sandbox Code Playgroud)

objective-c mapkit ios

0
推荐指数
1
解决办法
2030
查看次数