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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Xcode

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

Swift

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

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

Q&A

解決済

1回答

998閲覧

Swiftの地図表示(GoogleMap API)現在地の名前を取得する方法が分かりません

seastar

総合スコア62

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Xcode

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

Swift

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

Google マップ

Google Mapは、Google社がオンラインで提供している地図・ローカル検索サービスです。GIS(Geographic Information System:地理情報システム)の中の「WebGIS」に該当します。地図・航空写真・地形の表示方式があり、それぞれユーザーが縮尺を調整して表示させることができます。地域の情報サービスを検索する機能やルート検索の機能も搭載されています。

0グッド

0クリップ

投稿2021/03/05 03:22

Swiftで地図表示(GoogleMap API)現在地の名前を取得する方法が分かりません。

現在、現在地を取得し、画面中央に現在地をクローズアップするところまで実装しています。

やりたいことは、現在地の○○県○○市をテキストとして取得し、
UILabelに表示させたいのですが、現在地の名前の取得ができず、他サイト見ましたが、
やりたいことを実装している参考サイトが見つからず困っています。

以下は公式のサンプルコードを引用したものですが、
例えばmarker.position ~で取得した場所から、シドニーとオーストラリアを現在地によって、動的に掴みに行きたいです。

Swift5

1 2import UIKit 3import GoogleMaps 4 5class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0) 10 let mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera) 11 self.view.addSubview(mapView) 12 13 let marker = GMSMarker() 14 marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20) 15 marker.title = "Sydney" 16 marker.snippet = "Australia" 17 marker.map = mapView 18 } 19}

現在地は、以下のサイトを参考に取得しています。
https://qiita.com/MasatoraAtarashi/items/dbf7aa3ff6c6c1b62ee4

override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. //初期値はApple本社 let camera = GMSCameraPosition.camera(withLatitude: 37.3318, longitude: -122.0312, zoom: 17.0) mapView = GMSMapView.map(withFrame: CGRect(origin: .zero, size: view.bounds.size), camera: camera) mapView.settings.myLocationButton = true //右下のボタン追加する mapView.isMyLocationEnabled = true // User Location locationManager.delegate = self locationManager.requestWhenInUseAuthorization() locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.startUpdatingLocation() self.view.addSubview(mapView) self.view.bringSubviewToFront(mapView)

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

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

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

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

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

TsukubaDepot

2021/03/05 04:48

私は GoogleMap API を使わないので方針だけコメントします。 現在地(緯度軽度)から住所を取得するには、逆ジオコーディングという処理が必要となります。 Google の API だと https://developers.google.com/maps/documentation/ios-sdk/reverse_geocoding になると思いますが、日本語で参考になる資料はなさそうです。 StackOverflow 英語版のお勝手日本語版なら見つかるので、それで理解できそうであれば助けになるかもしれません。 あるいは、逆ジオコーディングだけ MapKit を使う方法もあると思います。 MapKitの例はわかりやすい例があります。 https://dev.classmethod.jp/articles/geocoding-use-mapkit/
seastar

2021/03/05 13:48

できました。ありがとございます。 ジオコーディングという言葉を知らずに実装していたので、逆ジオコーディングで調べたら実装できました! 緯度軽度は取れているので、 let location = CLLocation(latitude: 緯度の値, longitude: 経度の値) CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in guard let placemark = placemarks?.first, error == nil else { return } 県名のラベル = placemark.administrativeArea 市のラベル = placemark.locality }
TsukubaDepot

2021/03/05 13:56

では、上記の内容で自己回答していただけませんでしょうか。 それで解決済みにしていただければと思います。
seastar

2021/03/05 14:07

分かりました。自己回答させていただきます。 TsukubaDepot様のおかげで解決できました。 本当にありがとうございました。
guest

回答1

0

自己解決

緯度経度が取れている状態からの、現在地名の実装方法

swift

1let location = CLLocation(latitude: 緯度の値, longitude: 経度の値) 2CLGeocoder().reverseGeocodeLocation(location) { placemarks, error in 3guard let placemark = placemarks?.first, error == nil else { return } 4県名のラベル = placemark.administrativeArea 5市のラベル = placemark.locality 6}

投稿2021/03/05 14:08

seastar

総合スコア62

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問