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

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

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

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

Swift

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

Q&A

解決済

3回答

1627閲覧

関数が実行されず、マップにオーバーレイが出来ない

AppDvl

総合スコア58

Xcode

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

Swift

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

1グッド

0クリップ

投稿2019/07/10 13:31

編集2019/07/22 18:38

######実現したいこと
変数DmapのMKMapView型の上にサークルをオーバーレイしたい。

######試したこと
print("Dmapが呼ばれた")を func Dmap() の中に記入してもプリントアウトで表示されていないので、func Dmap()が実行されていないことが原因だと思います。
そこで //addOverlayした際に呼ばれるデリゲートメソッド のところで
テキストだとfunc mapView となっていたのですが、func Dmap()に変えてみましたが結果は同じでした。
エラーなどは出ていません。

この件で数日躓いています、どなたかご教授お願いします。

###当該のコード

import UIKit import MapKit class ViewController: UIViewController,MKMapViewDelegate { @IBOutlet weak var Dmap: MKMapView! override func viewDidLoad() { super.viewDidLoad() let clocation : CLLocationCoordinate2D = CLLocationCoordinate2DMake(35.703056, 139.58) //中心の座標ように定義 let circleOverlay : MKCircle = MKCircle(center: clocation , radius: 100) //MKCircle型の定義 let span = MKCoordinateSpan(latitudeDelta: 0.001,longitudeDelta: 0.001)//地図の範囲 緯度経度の差 let region = MKCoordinateRegion(center: clocation, span: span) //中心と範囲を定義 Dmap.setRegion(region, animated: true) Dmap.addOverlay(circleOverlay)//Mapをセット // Do any additional setup after loading the view. //addOverlayした際に呼ばれるデリゲートメソッド func Dmap(mapView:MKMapView,rendererFor overlay:MKOverlay)-> MKOverlayRenderer{ //rendererはレンダラー→レンダリング装置→レンダリングは生成する事 let renderer : MKCircleRenderer = MKCircleRenderer(circle: overlay as! MKCircle) print("Dmapが呼ばれた") renderer.lineWidth = 1 renderer.strokeColor = UIColor.blue renderer.fillColor = UIColor.blue renderer.alpha = 0.3 return renderer } } }

プリントアウト

2019-07-20 13:07:03.332828+0900 map[2590:157293] [AXMediaCommon] Unable to look up screen scale 2019-07-20 13:07:03.333011+0900 map[2590:157293] [AXMediaCommon] Unexpected physical screen orientation 2019-07-20 13:07:03.382356+0900 map[2590:157293] [AXMediaCommon] Unable to look up screen scale 2019-07-20 13:07:03.410909+0900 map[2590:157293] [AXMediaCommon] Unable to look up screen scale 2019-07-20 13:07:03.411050+0900 map[2590:157293] [AXMediaCommon] Unexpected physical screen orientation

storyboard     シミュレーター
イメージ説明イメージ説明

kbel23👍を押しています

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

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

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

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

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

kbel23

2019/07/15 10:11

何で作ってるのかわからないと・・・ swift?
AppDvl

2019/07/15 12:49

はじめましてKuro23さん 言語を記入してませんでした。 swift です。 よろしくお願いします。
guest

回答3

0

ベストアンサー

メソッド名が違います。

swift

1func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {

あと、delegateをしているかどうかも確認して下さい。

投稿2019/07/22 04:01

fuzzball

総合スコア16731

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

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

AppDvl

2019/07/22 18:34

fuzzballさん func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { の部分を書き換えてdelegateを確認しました。 しかし、結果は変わらず。 delegateは画面キャプチャのように、storyboardでいました。 プリントアウトの結果も"Dmapが呼ばれた"が表示されていません。 なぜmapViewが呼ばれないのでしょう?
fuzzball

2019/07/23 00:06

名前を変更した mapView(_:rendererFor:) ですが、viewDidLoad()の中に入っているので外に出して下さい。
AppDvl

2019/07/24 03:40

ありがとうございます! viewDidLoad()の中に入れてはダメなんですネ。 呼び出されるfunc mapView()はどこに書いても同じだと思い違いをしていました。 参考書などではわざわざextensionで拡張した中にfunc mapView()を書いていることがありましたが、今回のことでなぜ、extensionで分けて書いていたのか理解できました。 本当にいい勉強になりました。大変助かりました、ありがとうございます。
guest

0

https://qiita.com/koogawa/items/3eb6ab3615744e8d55b9
こちらのホームページを参照してみてはどうでしょうか?

投稿2019/07/21 08:25

Kaguya_4869

総合スコア116

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

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

AppDvl

2019/07/22 03:51

MOmiko_yさん ホームページを読みましたがaddOverlayした時に呼ばれ実行する、という方法なのはわかります。 できれば私の書いたコードでなぜfunc Dmapが呼ばれないのか教えて頂きたいです。 不躾ながらお願いします。
guest

0

・Dmap.addOverlay(circleOverlay)のタイミングで呼び出されるmapView(_:rendererFor:) をviewDidLoad()の中に書いてはいけない。別にextensionで分けて書くことがスマートらしい。
・呼び出される関数名は変えてはいけないapView(_:rendererFor:) →Dmap(_:rendererFor:)はダメ。
・storyboard上でdelegateを設定すること!忘れやすい。

皆様のお役に立てますように。

投稿2019/07/24 03:50

AppDvl

総合スコア58

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問