3

に x 量の線を描いていMKMapViewます。データは Web サービスからダウンロードされ、描画が必要な線ごとに を作成しMKPolyline、それを に追加しoverlayArray(一部のオーバーレイには複数のポリラインがあります)、最終的にそのオーバーレイを次の方法でマップに追加します。

[self.mapView addOverlays:overlayArray];`

したがって、次の関数が呼び出され、素晴らしく機能します。

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
    if (![overlay isKindOfClass:[MKPolygon class]]) {
        MKPolyline *route = overlay;
        MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:route];
        renderer.strokeColor = [lineColours objectForKey:route.title];
        renderer.lineWidth = 3.0;
        return renderer;
    } else {
        return nil;
    }
}

ご覧のとおり、は事前定義された からstrokeColor正しい を取得します。これはすべて期待どおりに機能します。UIColorNSMutableDictionary

ただし、一部の線は重なっており、単一の色を使用することが常に望ましいとは限りません。2 つまたは 3 つの色で構成される線を作成する方法があるかどうか疑問に思っていましたが、多くのフィットネス アプリで見られるような線に沿ったグラデーションではなく、線を横切る色です。たとえば、別の用途として、中央に透明なストリップがある 2 本の白い線で構成される高速道路のルートを描くこともできます。

これは私が開発しているアプリにとって非常に重要なので、見つけた発見をここに投稿します。他の人も自分の考えや知識を共有できることを願っています.

4

0 に答える 0