6

マップに MKOverlay を表示する必要がありますが、実際に表示できません。

Apple のLocation Awareness Programming Guideのに従っていますが、オーバーレイは表示されません。これは私が作成した最初の 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];
}

ストーリーボード:

絵コンテ

コーディングの提案は大歓迎です。ありがとう!

4

3 に答える 3

7

mapViewdelegateを View Controller インスタンスに設定してください (おそらくFile's ownerこの場合)。

インターフェイス ビルダーで、マップ ビューを右クリックし、デリゲートの右側にある中抜きの円から、左側のペインの [プレースホルダー] セクションにある [ファイルの所有者] アイコンにドラッグします。

ストーリーボードの場合は、ファイルの所有者ではなく、View Controller アイコンに接続します。

于 2012-01-29T20:47:26.653 に答える
0

問題は解決しましたか?(スクリーン ショットの) デリゲートの横にある円から、クラスの名前である円にドラッグするだけです。インスペクタには、現在の場所を表示できる設定があります..? コロラド州の上に表示されるように、たとえばviewDidLoadでマップを中央に配置する必要がありました..

于 2012-08-02T19:28:02.070 に答える
0

おそらく、前に追加しようとしてaView を殺してい- (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;
} 
于 2012-01-29T20:53:23.240 に答える