我在解决这个问题时请求您的建议:
我正在获取XML文件以在我的MapView上显示Pins。在另一种方法中,我在地图上显示我当前的位置:
-(void)setPOIs {
NSLog(@"insert POIs");
int x = 0;
while (x < [res count]) {
CLLocationCoordinate2D c;
NSString *latitude = [[res objectAtIndex:x] objectForKey:@"latitude"];
NSString *longitude = [[res objectAtIndex:x] objectForKey:@"longitude"];
c.latitude = [latitude doubleValue];
c.longitude = [longitude doubleValue];
GPSAnnotation *annotation = [[GPSAnnotation alloc] initWithCoordinate:c];
annotation.mTitle=[[res objectAtIndex:x] objectForKey:@"ordiname"];
annotation.currentPoint = [NSNumber numberWithInt:[[[res objectAtIndex:x] objectForKey:@"tierarztid"] intValue]];
annotation.currentRow = [res objectAtIndex:x];
[mapViewOutlet addAnnotation:annotation];
[annotation release];
NSLog(@"latitude setPOIs: %@", latitude);
x++;
}
[self showOwn];
}
- (void)showOwn {
CLLocationCoordinate2D c;
c.latitude = location.latitude;
c.longitude = location.longitude;
GPSAnnotation *annotation1 = [[GPSAnnotation alloc] initWithCoordinate:c];
annotation1.mTitle= @"Ihr Standort";
[mapViewOutlet addAnnotation:annotation1];
[annotation1 release];
}
这里我展示了针脚:
- (MKAnnotationView *)mapView:(MKMapView *)mapViewOutlet viewForAnnotation:(GPSAnnotation *)annotation {
int postag = 0;
//int row = 0;
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.pinColor = MKPinAnnotationColorGreen;
UIButton *myDetailButton = [UIButton buttonWithType:UIButtonTypeCustom];
myDetailButton.frame = CGRectMake(0, 0, 23, 23);
myDetailButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
myDetailButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
// Set the image for the button
[myDetailButton setImage:[UIImage imageNamed:@"button_right.png"] forState:UIControlStateNormal];
[myDetailButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];
if ([[annotation title] isEqualToString:@"Current Location"]) {
postag = 99999;
} else {
postag = [annotation.currentPoint intValue];
}
myDetailButton.tag = postag;
// Set the button as the callout view
annView.rightCalloutAccessoryView = myDetailButton;
annView.animatesDrop=NO;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
[annView release];
}
如何为当前位置显示自定义图像和/或不显示公开按钮?
答案 0 :(得分:1)
感谢您的反馈!我通过简单地调整if ... else语句
来解决- (MKAnnotationView *)mapView:(MKMapView *)mapViewOutlet viewForAnnotation:(GPSAnnotation *)annotation {
int postag = 0;
//int row = 0;
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.pinColor = MKPinAnnotationColorGreen;
UIButton *myDetailButton = [UIButton buttonWithType:UIButtonTypeCustom];
myDetailButton.frame = CGRectMake(0, 0, 23, 23);
myDetailButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
myDetailButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
if ([[annotation title] isEqualToString:@"Ihr Standort"]) {
postag = 99999;
UIImage *annotationImage = [UIImage imageNamed:@"07-map-marker.png"];
annView.image = annotationImage;
} else {
postag = [annotation.currentPoint intValue];
[myDetailButton setImage:[UIImage imageNamed:@"button_right.png"] forState:UIControlStateNormal];
[myDetailButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];
}
myDetailButton.tag = postag;
// Set the button as the callout view
annView.rightCalloutAccessoryView = myDetailButton;
annView.animatesDrop=NO;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
[annView release];
}
BR,
的Stefan
答案 1 :(得分:0)
而不是使用MKPinAnnotationView
使用MKAnnotationView
。 MKPinAnnotationView
是MKAnnotationView
的子类。 MKPinAnnotationView仅显示引脚。 MKAnnotationView具有图像属性,您可以将其设置为显示不同的图像而不是图钉。
显示公开按钮的代码行是您的rightCalloutAccessoryView
指令。拿出来,标注中的详细信息将会消失。
答案 2 :(得分:0)
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
{
if ([annotation isKindOfClass:[ParkingSpot class]])
{
static NSString* AnnotationIdentifier = @"ParkAnnotationIdentifier";
MKAnnotationView* annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ParkAnnotationIdentifier];
if (!annotationView)
{
MKAnnotationView *annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
annotationView.draggable = NO;
UIImage *annotationImage = ...your image here
annotationView.image = annotationImage;
}
return annotationView;
}
}