2012-01-29 89 views
5

顯示MKOverlay我需要在地圖上顯示的MKOverlay,但不能讓它真正出現。如何:上的MKMapView

我正在關注來自Apple的Location Awareness Programming Guideexample,並且不會顯示疊加層。任何幫助將不勝感激,這是我做的第一個iPhone應用程序,所以我可能會錯過簡單的東西。

NavViewController.h

#import <UIKit/UIKit.h> 
#import <MapKit/MapKit.h> 

@interface NavViewController : UIViewController <MKMapViewDelegate> { 
} 
@property (weak, nonatomic) IBOutlet MKMapView *mapView; 

@end 

NavViewController.m

#import "MSUNavViewController.h" 
#import <CoreLocation/CoreLocation.h> 

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKPolygon class]]) 
    { 
     MKPolygonView* aView = [[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay]; 

     aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2]; 
     aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7]; 
     aView.lineWidth = 3; 

     return aView; 
    } 
    return nil; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Define an overlay that covers Colorado. 
    CLLocationCoordinate2D points[4]; 

    points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116); 
    points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066); 
    points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981); 
    points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267); 

    MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4]; 
    poly.title = @"Colorado"; 

    [_mapView addOverlay:poly]; 
} 

故事板:

storyboard

任何編碼建議,將不勝感激。 謝謝!

回答

7

確保將mapView的delegate設置爲視圖控制器實例(在這種情況下可能爲File's owner)。

在Interface Builder中,在地圖視圖在委託權在左側窗格中的佔位符部分單擊鼠標右鍵,從空心圓圈拖動到文件的所有者圖標。

對於情節串連圖板,連接到視圖控制器圖標,而不是文件的所有者。

+0

究竟如何設置委託給視圖控制器實例? 我對此很陌生。 – nslocum 2012-01-29 21:12:38

+0

在筆尖的地圖視圖點擊右鍵,如果的MKMapView的引用出口MapView的第一次檢查 - 文件的所有者,然後檢查其'delegate'出口'文件的owner'。 – ZhangChn 2012-01-29 21:17:15

+0

它看起來像委託沒有設置,我不知道如何將其設置爲「文件的所有者」。另外,我在iOS 5上,所以文件的所有者圖標不會出現。 – nslocum 2012-01-29 21:40:45

0

大概是你殺了一個查看- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay作者:return nil; 嘗試添加else之前。

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKPolygon class]]) 
    { 
     MKPolygonView* aView = [[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay]; 

     aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2]; 
     aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7]; 
     aView.lineWidth = 3; 

     return aView; 
    } 
    else return nil; 
} 
+0

謝謝,但這不是問題。 – nslocum 2012-01-29 21:11:17

0

您是否解決了您的問題?從圓只要將身邊的代表(在你的屏幕快照)哪個是類名的圈..還有就是在檢查,將允許你顯示你在哪裏,還設置..?你做需要將地圖中說viewDidLoad中,使其顯示在科羅拉多..