さまざまな場所のカスタムピン画像があり、すべてのさまざまなピンを同時に表示できます。しかし、問題は、ユーザーの現在の場所を表示すると、すべてのピンの色が変わることです。
ここにコードがあります:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
if ([annotation isKindOfClass:[MKUserLocation class]])
return nil;
if ([annotation isKindOfClass:[MapAnnotation class]]) {
MKAnnotationView *test=[[MKAnnotationView alloc]
initWithAnnotation:annotation reuseIdentifier:@"AnnotationIdentifier"];
test.canShowCallout = YES;
// test.animatesDrop = YES;
UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
test
.rightCalloutAccessoryView = rightButton;
switch (_pushpinTag) {
case 5:
test.image = [UIImage imageNamed:@"pushpin_green.png"];
break;
case 6:
test.image = [UIImage imageNamed:@"pushpin_blue.png"];
break;
case 7:
test.image = [UIImage imageNamed:@"pushpin_black.png"];
break;
case 8:
test.image = [UIImage imageNamed:@"pushpin_yellow.png"];
break;
case 3:
test.image = [UIImage imageNamed:@"pushpin_red.png"];
break;
default:
break;
}
return test;
}
}
別のボタンを押すと、別のピン(カスタム画像付き)が表示されます。緑、青、黒、黄色のピンがあるとしましょう。ボタンを押して緑のピンを表示し、次に青の場合、次に黒の場合、すべてのピンがそれぞれの画像に表示されます。しかし、ボタンを押してユーザーの現在の場所を表示すると、すべてのピンが最後に押したピン(黒)に変わります。
ユーザーの現在地を表示するコードは次のとおりです。
- (IBAction)currentLocationButton:(id)sender {
_mapView.showsUserLocation = YES;
[_mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES];
}
誰かが私が何が間違っているのか指摘できますか?
みんなありがとう :)