5

ポリゴン/円を描きたいマップビューにグーグルマップを表示したかった。

何かアドバイス?

4

2 に答える 2

6

私があなたの質問を読んでいる方法は、プログラムでマップ上にポリゴンを描画したいということです。これについては、MapKit の Apple ドキュメントを参照してください。

MapKit マップに透明なビューを追加する必要はありません ( MKMapView)。オーバーレイオブジェクトを作成します。この場合はMKPolygon. (次の例では、変数mapは、MKMapViewこのコードを配置したビュー コントローラーが所有するインスタンスになります):

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";

[map addOverlay:poly];

次に、オーバーレイの外観 (色、ストロークなど) をカスタマイズする場合は、オブジェクトMKMapViewDelegateを所有するビュー コントローラーにプロトコルを実装し、次の実装を提供します。MKMapViewmapView:viewForOverlay

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
    if ([overlay isKindOfClass:[MKPolygon class]])
    {
        MKPolygonView* aView = [[[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay] autorelease];
 
        aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2];
        aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
        aView.lineWidth = 3;
 
        return aView;
    }
 
    return nil;
}

もちろん、マップ インスタンスのデリゲートを実際にビュー コントローラー (MKMapViewDelegate) に、インターフェイス ビルダーまたはコード (例: viewDidLoad) で割り当てることを常に忘れないでください。

于 2012-05-15T07:00:22.503 に答える
1

これを達成するために、この人のブログ投稿のアイデアを使用しました。基本的に、マップ上に透明なビューを追加する必要があります。次に、マップを使用して、位置をビュー上のポイントに変換できます。このサイトが役に立たない場合はお知らせください。私のコードから例を掘り起こすことができます。

http://spitzkoff.com/craig/?p=65

于 2009-10-14T19:59:11.657 に答える