よろしくお願いします。「これからつくるiphoneアプリ開発入門」という書籍で、Xcodeを利用したiPhoneアプリ開発を学んでいます。
前提・実現したいこと
地図を表示し、地名で検索するアプリを作っている過程、書籍ではLesson5の1章が終わったところです。書籍の通りなら地図が表示されているはずなのですが、
発生している問題・エラーメッセージ
添付しました画像のような状態で、エミュレーターに地図が表示されません。マップアプリでよく見る縦線横線は表示されているのですが。
該当のソースコード
swift
1// 2// ViewController.swift 3// MyMap 4// 5// Created by iMac02 on 2021/04/27. 6// Copyright © 2021年 iMac02. All rights reserved. 7// 8 9import UIKit 10import MapKit 11 12class ViewController: UIViewController, UITextFieldDelegate { 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 // Do any additional setup after loading the view, typically from a nib. 17 18 // Text Fieldのdelegate通知先を設定 19 inputText.delegate = self 20 } 21 22 override func didReceiveMemoryWarning() { 23 super.didReceiveMemoryWarning() 24 // Dispose of any resources that can be recreated. 25 } 26 27 28 @IBOutlet weak var inputText: UITextField! 29 30 @IBOutlet weak var dispMap: MKMapView! 31 32 33 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 34 //キーボードを閉じる 35 textField.resignFirstResponder() 36 37 //入力された文字を取り出す 38 let searchKeyword = textField.text 39 40 print(searchKeyword!) 41 42 //デフォルト動作を行うのでtrueを返す 43 return true 44 } 45} 46 47
試したこと
Option+クリックでピンチアウト動作をし、地図を縮小してみましたが、駄目でした。
スペルミス等がないか、また書籍の内容と相違ないか、何度か確認しました。
補足情報(FW/ツールのバージョンなど)
Xcode 8.2/Swift 3 です。使っているiMacが古いので、このバージョンを使用しています。
よろしくお願いいたします。
Xcodeにログが出てませんかね? この手の不具合はログを頼りにするのがベストです。ログの内容見ても分からないようであれば、問題ない範囲で質問文にログの内容を追記すると回答がくるかもしれません。ソースコードだけでは誰にも答えようがなさそうです。
mapViewのdelegateが設定されていないのでは?
mapViewではなくて「dispMap」の...
回答ありがとうございます。特にログは出ていないようです。他に確認すべきところなど、ありますでしょうか?
tomato879241様
ありがとうございます。すみません、まだdelegateの意味がよく理解できていないので、少し調べてみます。
全然意味を理解できていないですが、やったことは以下の通りです。
1.ViewControllerのところにMKMapViewDelegateと追記
class ViewController: UIViewController, UITextFieldDelegate, MKMapViewDelegate{
.....}
2.順番が違うように思えたので、
@IBOutlet weak var inputText: UITextField!
@IBOutlet weak var dispMap: MKMapView!
の2行を override func viewDidLoad() {... の上に移動
3.override func viewDidLoad() {... の中に
dispMap.delegate = self
を追記。
これによる変化なのか分かりませんが、追加画像のように、オーストラリア大陸だけが表示されています。
MapView は特に設定しなくても地図が表示されるはずですが、インターネット経由で地図データを取得するので、ネット接続がうまくいってない可能性がありますね…。
hoshi-takanori様
メール受信、ブラウジング等、ネット接続は特に問題ないようなのですが、何かが邪魔しているのでしょうか…。
言葉が足りなくてすみません。iOS シミュレーターのネット接続がうまくいってない可能性があると思ったのですが、Mac のネットが繋がってるならシミュレーターもつながるはずですね…。
ちなみに、部分的に表示されたようですが、そこからスクロールや拡大縮小 (Option キーを押しながらドラッグ) するとどうなりますか?
また、シミュレーターには Apple の地図アプリも入ってると思いますが、そちらでは地図は表示されますか?
>>hoshi-takanori様
ありがとうございます。部分的に表示されている地図は、拡大すると問題なく表示されます(シドニーなど)。また、Appleの地図アプリを開いたところ、まったく同じ状態でした!(オーストラリアのみ表示)ということは、Simulatorそのもに問題があるということなのでしょうか。
地図データのキャッシュがおかしくなってるのかも知れませんね。試しに、シミュレータの機種を別のものに変えてみたらどうでしょうか?
Simulatorの「Open System Log...」を開いたところ、ログがありました。かなり量が多いですが、コピペしてみます。
>>hoshi-takanori様
すみません、見落としていました。そうですね、一度別の機種にしてみます。
iPhoneSEにしてみましたが、症状は同じでした。その後、Debug→LocationをAppleにしてみたところ、いったんクパティーノの地図が表示されましたが、ピンチアウトするとまた罫線のみ表示になりました。左上のグルグルがずーっと回っているので、もしかするとデータの通信にすごく時間がかかっているのでしょうか?
地図のデータを読むには時間が少しかかることがあります。
あなたの回答
tips
プレビュー