2013-12-13 22 views
11

以下のコードで2点間の線をかなり簡単に作成することができます(その一部分)どのようにして線を点線でなくソリッドにすることができますか?また、ラインが長くなるほど不透明度を変更することは可能でしょうか?マップ上の点線

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay 
{ 
    MKPolylineRenderer *renderer =[[MKPolylineRenderer alloc] initWithPolyline:overlay]; 
    renderer.strokeColor = [UIColor orangeColor]; 
    renderer.lineWidth = 3.0; 

    return renderer; 
} 

答えて

39

lineDashPatternプロパティを使用して、行に必要なパターンを作成できます。

MKPolylineRendererは、そのプロパティといくつかの他のものを持つMKOverlayPathRendererのサブクラスです(ドキュメントへのリンクを参照)。

たとえば、これはパターンを2ポイントの長さに続いて5ポイントのギャップに設定します。パターンはポリラインの全長にわたって繰り返されます。

renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.5]; 

をかalphaプロパティを設定します:

不透明度については
renderer.lineDashPattern = @[@2, @5]; 


、あなたはstrokeColorにアルファを適用するか、「あなたは何を意味

renderer.alpha = 0.5; 

わかりません行が長くなるほど「問題の一部です。

+0

アンナ、助けてくれてありがとう。それは理にかなっている。 "長い行"に関して、私はライン自体の中でアルファ値を1から.1に変えることが可能かどうか疑問に思っていました。例えば、開始点は1のアルファ値になり、終了点は.1 – jdross

+0

アルファを線に沿って変化させることは勾配となり、残念なことにその能力は標準レンダラに組み込まれません。カスタムオーバーレイレンダラーを作成し、手動で描画する必要があります。 [This](http://stackoverflow.com/a/20159374/467105)と[this](http://stackoverflow.com/a/19377748/467105)は、そのパスを追求したい場合に役立ちます。 – Anna

+0

素敵な説明@Anna –

関連する問題