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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

1回答

196閲覧

ピンの画像を、FirebaseStorageに格納している個別の画像に変更したい

watasuke

総合スコア27

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2017/06/24 10:13

###前提・実現したいこと
地図的なアプリを作っているのですが、ピンの画像を、FirebaseStorageに格納している個別の画像に変更したいです。

コードの前半部分は関係ないと思いますが、初心者でどこまでお見せすればよいかわからないため全体を公開します。

###発生している問題・エラーメッセージ
ピンの画像がデフォルトのまま変わりません。
画像の取得自体はうまくいっているようで、print(imageimage!)では格納している画像についての情報を読めるのですが、実際のピンはデフォルトのままです。

エラーメッセージを吐かないのでどう対策すればいいか悩んでいます。

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

func pinCreate(){ //配列の該当のデータをitemという定数に代入? let items = contentArray //まずはFirebaseStorageに接続 let storage = Storage.storage() // Create a storage reference from our storage service let storageRef = storage.reference(forURL: "xxxx") for item in items { //itemの中身を辞書型に変換? let content = item.value as! Dictionary <String, Any> for (key, element) in content{ let pinData = content[key] as! [String: Any] if let geohash = pinData["geohash"] as? String { let (latitude, longitude) = Geohash.decode(hash: geohash)! let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2DMake(CLLocationDegrees(latitude.min), CLLocationDegrees(longitude.min)) annotationArray.append(annotation) let reuseId = "pin" if var pinView = self.mapView.dequeueReusableAnnotationView(withIdentifier: reuseId) { } else { // 再利用できるアノテーションが無い場合(初回など)は生成する var pinView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) // Firebase Storageの該当imageのReference let catRef = storageRef.child("xxxx.jpg") // Fetch the download URL catRef.downloadURL { (URL, error) -> Void in if (error != nil) { // Handle any errors } else { // Get the download URL for 'images/stars.jpg' // URLを指定したUIImageの生成例 let catPictureURL = URL! /* デフォルト設定でセッションオブジェクトを作成する。 */ let session = URLSession(configuration: .default) /* ダウンロードタスクを定義します。ダウンロードタスクは、 URLの内容をデータオブジェクトとしてダウンロードし、 そのデータで望むことを実行できます。 */ let downloadPicTask = session.dataTask(with: catPictureURL) { (data, response, error) in /* ダウンロードが完了しました。 */ if let e = error { print("pictureのダウンロード中にエラーが発生しました: \(e)") } else { /* エラーは見つかりませんでした。 レスポンスがないと変わってしまいますので、それもチェックしてください。 */ if let res = response as? HTTPURLResponse { print("\(res.statusCode)") if let imageData = data { /* 最後に、そのデータをイメージに変換し、 それを使って望むことをします。 */ let imageimage = UIImage(data: imageData) print(imageimage!) pinView.image = imageimage pinView.annotation = annotation } else { print("画像を取得できませんでした:画像はありません") } } else { print("何らかの理由で応答コードを取得できませんでした") } } } downloadPicTask.resume() } } } self.mapView.addAnnotations(annotationArray) } } } }

###補足情報(言語/FW/ツール等のバージョンなど)
swift3
xcode8.3.3

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

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

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

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

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

guest

回答1

0

MKMapViewDelegateのmapView(MKMapView, viewFor: MKAnnotation)
は実装されていますでしょうか?MKAnnotationViewはそちらのメソッド内で用意してやらないとうまくいかないかもしれません。
こちらのサイトや、その他のサイトにもメソッドの実装例が見つかるかと思います。

投稿2017/06/24 12:53

Bongo

総合スコア10807

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

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

watasuke

2017/07/01 03:05

ありがとうございます。mapView(MKMapView, viewFor: MKAnnotation)をつかって実装したところ、別のエラーが出てきてしまったため別途投稿させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問