質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

2435閲覧

MKPolylineで複数の色を描画する方法につきまして

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/21 08:32

###前提・実現したいこと

プログラミング経験6ヶ月ほどの初心者です。
Swift3.0.2でMapKitとCoreLocationを使った地図アプリを作成しています。

MKPolylineとデリゲートメソッドのmapView(_:rendererFor:)で3箇所ほど
地図上に線を引き表示するところまでは出来ましたが、どのように分岐をさせ
別々の色を設定すれば良いのか書き方がわからず困っております。

どうかご教示いただきたくお願いいたします。

###発生している問題・エラーメッセージ

・追加した3本のpolylineがすべて同じ色になってしまう。

###該当のソースコード

swift

1func polyline1() { 2 let line1 = [CLLocationCoordinate2D]() 3 line1.append(CLLocationCoordinate2D(latitude: 35.686897, longitude: 139.686823)) 4 line1.append(CLLocationCoordinate2D(latitude: 35.798471, longitude: 139.683419)) 5 6 // polyline作成 インスタンス変数にも保存しておく 7 let ptn1PolyLine: MKPolyline = MKPolyline(coordinates: &line1, count: line1.count) 8 ptn1PolyLineA = ptn1PolyLine 9 10 // myMapにpolylineを追加 11 myMap.add(ptn1PolyLineA) 12 } 13 14func polyline2() { 15 let line2 = [CLLocationCoordinate2D]() 16 line3.append(CLLocationCoordinate2D(latitude: 35.6471187, longitude: 139.740409)) 17 line3.append(CLLocationCoordinate2D(latitude: 35.760272, longitude: 139.728626)) 18 19 // polyline作成 インスタンス変数にも保存しておく 20 let ptn2PolyLine: MKPolyline = MKPolyline(coordinates: &line2, count: line2.count) 21 ptn2PolyLineB = ptn2PolyLine 22 23 // myMapにpolylineを追加 24 myMap.add(ptn2PolyLineB) 25 } 26 27func polyline3() { 28 let line3 = [CLLocationCoordinate2D]() 29 line3.append(CLLocationCoordinate2D(latitude: 35.631926, longitude: 139.880914)) 30 line3.append(CLLocationCoordinate2D(latitude: 35.707876, longitude: 139.808553)) 31 32 // polyline作成 インスタンス変数にも保存しておく 33 let ptn3PolyLine: MKPolyline = MKPolyline(coordinates: &line3, count: line3.count) 34 ptn3PolyLineC = ptn3PolyLine 35 36 // myMapにpolylineを追加 37 myMap.add(ptn3PolyLineC) 38 } 39 40// overlayをするデリゲートメソッド 41func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 42 43 /*overlayされる前にmapにaddしたpolylineの変数で分岐をさせたい*/ 44 if (MKPolyline == arN1PolyLineRe) { 45 46 // rendererを生成. 47 let myPolyLineRendere: MKPolylineRenderer = MKPolylineRenderer(overlay: overlay) 48 49 // 線の太さを指定 50 myPolyLineRendere.lineWidth = 3 51 52 // 線の色を指定 53 myPolyLineRendere.strokeColor = UIColor(red: 1.0, green: 0, blue: 0, alpha: 1.0) 54 55 print("polyline Map描画完了") 56 return myPolyLineRendere 57 } 58 } 59

###試したこと
・isKindOfClassで調べるような方法を試しましたが、MKCircleやMKPolygonとの分岐は出来ましたが
同じクラスの2つ目の描画、3つ目の描画で分岐させる方法がわかりませんでした。
使い方が間違っていることは理解できました。

どうぞ宜しくお願いいたします。

###補足情報(言語/FW/ツール等のバージョンなど)
・swift3.0.2
・storyboardでMapViewを作成しています。
・モーダルビューにスイッチが3つ配置してあり、対応したpolylineを描画するメソッドを実行しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問