这是我在这个网站上的第一个问题。
我的代码是使用 iOS 6 Mapkit,Objective-C 在以下函数中实现的。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
我只有两个带有自定义图钉图像的注释。一个红色别针和另一个橙色别针。红色大头针更接近用户在设备地图区域内的当前位置,而另一个橙色大头针距离 30 英里(当前地图上下文之外)。我根据每个引脚后面的数据使用不同的颜色。
问题:注释的自定义图像正在切换图像。
使用本网站上的所有提示,包括使用 dequeueReusableAnnotationViewWithIdentifier 等附加是我的代码。
在应用程序启动时地图的第一次显示上,我看到的错误是橙色图钉显示在设备地图上,而红色图钉显示在外面。这是不正确的,因为红色图像应该显示在设备地图上。
如果我点击地图上的“查找我”按钮以刷新我当前的位置,地图上会显示红色图钉,现在是正确的。当我再次点击“查找我”时,红色引脚会切换为橙色引脚 - 并且它会不断切换或切换引脚图像颜色。
if (PinColor == 0) {
MKAnnotationView* pinview = (MKAnnotationView *)[self._mapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"];
if (nil == pinview) {
MKAnnotationView* view = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"identifier"];
view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
view.opaque = YES;
view.image = [UIImage imageNamed:@"redpin.png"];
[view setCanShowCallout:YES];
if (self.newPinAdded) {
[view setSelected: YES];
}
return view;
}
return pinview;
}
else {
MKAnnotationView* pinview = (MKAnnotationView *)[self._mapView dequeueReusableAnnotationViewWithIdentifier:@"Orangeidentifier"];
if (nil == pinview) {
MKAnnotationView* view = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Orangeidentifier"];
view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
view.image = [UIImage imageNamed:@"pin glabensmall.png"]; //orange pin
view.opaque = YES;
[view setCanShowCallout:YES];
if (self.newPinAdded) {
[view setSelected: YES];
}
return view;
}
return pinview;
}