web-dev-qa-db-ja.com

MapViewでMKPolylineを描画する方法は?

地図に描画する点の配列がありますが、すでにデコードされています。

- (void) drawRoute:(NSArray *) path {
    NSInteger numberOfSteps = path.count;

    CLLocationCoordinate2D coordinates[numberOfSteps];
    for (NSInteger index = 0; index < numberOfSteps; index++) {
         CLLocation *location = [path objectAtIndex:index];
         CLLocationCoordinate2D coordinate = location.coordinate;

         coordinates[index] = coordinate;
    }

    MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
    [map addOverlay:polyLine];
}

ここで、「map」はMKMapViewのインスタンスであり、すでにデコードされたポイントのセットを表す配列をパスします。

[map addOverlay:polyLine];描かれます。私はいくつかのページでこの方法を見てきました:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
    polylineView.strokeColor = [UIColor redColor];
    polylineView.lineWidth = 1.0;

    return polylineView;
}

PolylineViewは実際に地図に描かれているものですか?また、MKPolylineを(上記のメソッドから)この最後のメソッドの「<MKOverlay> overlay」引数に渡そうとしましたが、例外がスローされました。

私は近くにいると思いますが、今何をすべきかわかりません。

助けてください!事前にどうもありがとうございました。

28
Fustigador

できました。

MapViewのデリゲートを設定していませんでした。 [map setDelegate:self]を追加するだけです。トリックをしました。

とにかくありがとうございました!。

14
Fustigador

座標でMKPolylineを作成し、そのpolyLineをマップビューに追加するだけです。

MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
    [map addOverlay:polyLine];

いくつかの座標の上にポリラインを描画する方法についてのチュートリアル here があります。 編集:URLはもう有効ではないようです。このURLのアーカイブバージョン here を見つけることができます。

4
MKPolyline *polyline = [MKPolyline polylineWithCoordinates:coordinates count:self.allPins.count];
[self.mapView addOverlay:polyline];

これをチェックしてください http://pinkstone.co.uk/how-to-draw-an-mkpolyline-on-a-map-view/ とSwift- http://rshankar.com/how-to-add-mapview-annotation-and-draw-polyline-in-Swift/

0
Arvind