使用新版本(2.1.0)我遇到了问题。滚动地图时,注释会消失。 在演示项目中,它工作正常。再次添加框架也无济于事。
- (void)viewDidLoad {
[super viewDidLoad];
placeDetail = [[PlaceDetailViewController alloc] init];
latitude = [placeDetail Latitude];
longitude = [placeDetail Longitude];
self.placeMapView = [[SKMapView alloc] init];
self.placeMapView.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame));
self.placeMapView.delegate = self;
self.placeMapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.placeMapView.settings.poiDisplayingOption = SKPOIDisplayingOptionNone;
[self.view addSubview:self.placeMapView];
//add a circle overlay
for(int i=0;i<latitude.count;i++)
{
//set the map region
SKCoordinateRegion region;
region.center = CLLocationCoordinate2DMake([latitude[i] floatValue], [longitude[i] floatValue]);
region.zoomLevel = 17;
self.placeMapView.visibleRegion = region;
SKAnnotation *mapAnnotation = [SKAnnotation annotation];
mapAnnotation.identifier = i;
mapAnnotation.minZoomLevel = 5;
mapAnnotation.annotationType = SKAnnotationTypeRed;
mapAnnotation.location = CLLocationCoordinate2DMake([latitude[i] floatValue], [longitude[i] floatValue]);
[self.placeMapView addAnnotation:mapAnnotation];
}
}
Annoation creation
-(void)mapView:(SKMapView *)mapView didSelectAnnotation:(SKAnnotation *)annotation {
self.placeMapView.calloutView.titleLabel.text= placeDetail.Name;
self.placeMapView.calloutView.titleLabel.font = [UIFont fontWithName:@"PTSans-Narrow" size:15];
self.placeMapView.calloutView.subtitleLabel.text = @"";
[self.placeMapView showCalloutForAnnotation:annotation withOffset:CGPointMake(0, 42) animated:YES];
[self.placeMapView.calloutView.rightButton addTarget:self action:@selector(backToDetailView) forControlEvents:UIControlEventTouchUpInside];
}
感谢您的帮助。
编辑:我认为我发现导致这种行为的问题。在我的应用程序中,我有两种地图。一张迷你地图和一张大地图。但在两个不同的观点。 当我停用Mini Map时,它可以工作。所以我认为它与加载SKMap框架有关。目前迷你地图功能在视图中调用了load方法。 所以你知道该怎么做吗?答案 0 :(得分:0)
这是SDK的2.1和2.2版本中的一个错误 - 它将在2.3(2014年11月)中修复。
对于2.1 / 2.2,有一种解决方法:对小地图和大地图上的注释具有不同的id。例如,你在小地图上有N个注释,其中有ids 0..N-1,那么大地图将有来自N向前的ids的注释。因此,对于大地图上的M注释,您可以使用N..M-1中的ID进行注释。