2013-07-29 49 views

回答

1

您正在尋找地圖覆蓋MKOverlayView

檢查這些教程:

創建覆蓋

  • 創建MKOverlayView

創建的MKOverlayView像一個子類:

.H #進口 #進口

@interface MapOverlayView : MKOverlayView 
{ 
} 
@end 

.M

#import "MapOverlayView.h" 

@implementation MapOverlayView 

- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)ctx 
{ 

    UIImage *image = [UIImage imageNamed:@"yourImage.png"]; 
    CGImageRef imageReference = image.CGImage; 

    MKMapRect theMapRect = [self.overlay boundingMapRect]; 
    CGRect theRect = [self rectForMapRect:theMapRect]; 

    CGContextDrawImage(ctx, theRect, imageReference); 
} 

@end 
  • 添加覆蓋

實施viewForOverlay:,在裏面創建覆蓋並添加到地圖。

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
{ 

    MapOverlay *mapOverlay = (MapOverlay *)overlay;  
    MapOverlayView *mapOverlayView = [[[MapOverlayView alloc] initWithOverlay:mapOverlay] autorelease]; 

    return mapOverlayView; 
} 
+1

我認爲MKAnnotationView更適合用例 – Florian

0

試試這個

annotation = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"try"]; 
    annotation.canShowCallout = YES; 

    annotation.image = [UIImage imageNamed:@"image.png"]; 


    return annotation; 

,不使用annotation.animatesDrop屬性。

1

你可以image財產像viewForAnnotation:方法波紋管與MKAnnotationView做到這一點..

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation { 

    static NSString *identifier = @"Current";   
    MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; 

    if (annotationView == nil) 
    { 
     annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier] autorelease]; 
    } 

    if (annotation == mapView.userLocation) 
     return nil; 

    annotationView.image = [UIImage imageNamed:@"yourImageName.png"]; 
    annotationView.annotation = annotation;    
    annotationView.canShowCallout = YES; 
    return annotationView; 
} 
+0

在哪裏設置圖像位置? – Azhar

+0

當你在你的課堂中添加lat-long的任何位置時,此代理方法將自動調用,並且此圖像將隨該lat-log放置在該位置上。 –

+0

@NG_SE請參閱此鏈接http上的mkmapview上定製引腳的演示示例://iphoneapp-dev.blogspot.in/2011/01/how-to-place-animated-annotations-on.html –

0

如果你在說什麼MKMapView
要顯示的圖像而不是銷的註釋,你需要重寫的MKMapView的方法

- (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)annotation 

像這樣:

- (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)annotation{ 
    static NSString* annotationIdentifier = @"Identifier"; 
    MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier]; 
    if(annotationView) 
     return annotationView; 
    else 
    { 
     MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationIdentifier]; 
     annotationView.canShowCallout = YES; 
// here you need to give the image you want instead of pin 
      annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"balloon.png"]];   
      return annotationView; 
     } 
     return nil; 
     } 
+0

如何設置圖片位置? – Azhar

+0

請參閱:http:// stackoverflow。com/questions/10520274/custom-mkannotationview -with-frame-icon-and-image –

相關問題