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

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

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

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

解決済

swiftでmapkitを使い、地図上を長押しすると円を描くプログラムを組もうとしていますが、コードはできたように思うのですが、円を描けません

kurokawa23192
kurokawa23192

総合スコア1

Swift

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

1回答

0評価

0クリップ

147閲覧

投稿2022/06/26 15:17

編集2022/06/27 21:12

プログラミング学習中のものです。皆様お忙しいとは思いますが、アドバイスがいただけるとありがたいです。
何卒、よろしくお願いいたします。

1、やりたいこと
swiftでmapkitを使用して、地図上を長押ししたところの座標をとり、そこを中心とした円を描こうとしています。

2.、起きている問題
swift学習中なのですが、いろいろなウェブページを参考にしつつ、試行錯誤しております。
長押しすると、地図上にピンを立てるプログラミングはできました。
円を地図上に表示するプログラミングもできました。
その二つを組み合わせて、今回のプログラミングを書いてみたのですが、狙い通りにいきません。
エラーメッセージは出ていませんし、シミュレーターでビルドできるのですが、長押ししても円を描けません。

3、参考にしたページ
下記のページを参考にしました。

https://faboplatform.github.io/SwiftDocs/3.mapkit/012_map/
https://hajihaji-lemon.com/swift/polygon_circle/
https://faboplatform.github.io/SwiftDocs/3.mapkit/006_pin/

  1. 関連するソースコードやスクリーンショット

下記が、実際に打ったコードになります。

swift

// // ViewController.swift // enn$pin220618 // // Created by USER on 2022/06/17. // import UIKit import MapKit class ViewController: UIViewController, MKMapViewDelegate { let mapView = MKMapView() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. //地図を表示 view.addSubview(mapView) mapView.frame = CGRect(x: 20, y: 50, width: view.frame.self.width-40, height: view.frame.size.height-220) // 長押しのUIGestureRecognizerを生成. let myLongPress: UILongPressGestureRecognizer = UILongPressGestureRecognizer() myLongPress.addTarget(self, action: #selector(ViewController.recognizeLongPress(sender:))) // MapViewにUIGestureRecognizerを追加. mapView.addGestureRecognizer(myLongPress) } @objc func recognizeLongPress(sender: UILongPressGestureRecognizer) { // 長押しした地点の座標を取得. let location = sender.location(in: mapView) // locationをCLLocationCoordinate2Dに変換. let myCoordinate: CLLocationCoordinate2D = mapView.convert(location, toCoordinateFrom: mapView) // 円を描画する(半径1000m). let myCircle: MKCircle = MKCircle(center: myCoordinate, radius: CLLocationDistance(1000)) // mapViewにcircleを追加. mapView.addOverlay(myCircle) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } /* addOverlayした際に呼ばれるデリゲートメソッド. */ func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { // rendererを生成. let myCircleView: MKCircleRenderer = MKCircleRenderer(overlay: overlay) // 円の内部を赤色で塗りつぶす. myCircleView.fillColor = UIColor.red // 円周の線の色を黒色に設定. myCircleView.strokeColor = UIColor.black // 円を透過させる. myCircleView.alpha = 0.5 // 円周の線の太さ. myCircleView.lineWidth = 1.5 return myCircleView } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

y_waiwai

2022/06/26 15:34

このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
kurokawa23192

2022/06/27 12:04

了解いたしました。アドバイスありがとうございます!

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Swift

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