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

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

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

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

Q&A

2回答

588閲覧

位置情報が違っている

jurinayuria11

総合スコア14

Swift

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

0グッド

0クリップ

投稿2019/04/16 11:16

前提・実現したいこと

Swiftでマップ検索アプリを作成しています。
実装中に以下のエラーが発生しました。

発生している問題・エラーメッセージ

東京駅を検索したが位置が少しずれてしまう

該当のソースコード

Swift

1 1. // 2 2. // ViewController.swift 3 3. // MyMap 4 4. // 5 5. 6 6. import UIKit 7 7. import MapKit 8 8. 9 9. class ViewController: UIViewController , UITextFieldDelegate { 1010. 1111. override func viewDidLoad() { 1212. super.viewDidLoad() 1313. // Do any additional setup after loading the view. 1414. 1515. // Text Fieldのdelegate通知先の設定 1616. inputText.delegate = self 1717. 1818. } 1919. 2020. @IBOutlet weak var inputText: UITextField! 2121. 2222. @IBOutlet weak var dispMap: MKMapView! 2323. 2424. func textFieldShouldReturn(_ textField: UITextField) -> Bool { 2525. // キーボードを閉じる(1) 2626. textField.resignFirstResponder() 2727. 2828. // 入力された文字を取り出す(2) 2929. if let searchKey = textField.text { 3030. 3131. // 入力された文字をデバックエリアに表示(3) 3232. print(searchKey) 3333. 3434. // CLGeocoderインスタンスを取得(5) 3535. let geocoder = CLGeocoder() 3636. 3737. // 入力された文字から位置情報を取得(6) 3838. geocoder.geocodeAddressString(searchKey, completionHandler: {(placemarks,error) in 3939. 4040. // 位置情報が存在する場合はunwrapPlacemarksに取り出す(7) 4141. if let unwrapPlacemarks = placemarks { 4242. 4343. // 1件目の情報を取り出す(8) 4444. if let firstPlacemarks = unwrapPlacemarks.first{ 4545. 4646. // 位置情報を取り出す(9) 4747. if let location = firstPlacemarks.location{ 4848. 4949. // 位置情報から緯度経度をtargetCoordinateに取り出す(10) 5050. let targetCoordinate = location.coordinate 5151. 5252. // 緯度経度をデバックエリアに表示(11) 5353. print(targetCoordinate) 5454. 5555. // MKPointAnnotationインスタンスを取得し、ピンを生成(12) 5656. let pin = MKPointAnnotation() 5757. 5858. // ピンの置く場所に緯度経度を設定(13) 5959. pin.coordinate = targetCoordinate 6060. 6161. // ピンのタイトルを設定(14) 6262. pin.title = searchKey 6363. 6464. // ピンを地図に置く(15) 6565. self.dispMap.addAnnotation(pin) 6666. 6767. // 緯度経度を中心にして半径500mwの範囲を表示(16) 6868. self.dispMap.region = MKCoordinateRegion(center: targetCoordinate, latitudinalMeters: 500.0, longitudinalMeters: 500.0) 6969. 7070. } 7171. } 7272. } 7373. }) 7474. } 7575. 7676. //デフォルト動作を行うのでtrueを返す(4) 7777. return true 7878. } 7979. 8080. } 81

試したこと

デバックエリアに緯度経度を表示してみました。

東京駅 CLLocationCoordinate2D(latitude: 35.6776117, longitude: 139.7651235)

実際には、下のようになるはずです。

東京駅 CLLocationCoordinate2D(latitude: 35.6813482, longitude: 139.7660155)

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

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

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

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

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

fuzzball

2019/04/17 05:38 編集

「下のようになるはずです」の根拠を教えてください。 ちなみに、今PCのGoogleマップで「東京駅」を検索してみたら 35.6812362, 139.7649361 と表示されました。
jurinayuria11

2019/05/07 05:13

自分がGoogleマップで調べたらそうでした。fuzzballさんと私は誤差の範囲だと思います。
fuzzball

2019/05/07 05:18

それは根拠になってないでしょう。 それなら「あなたとアプリは誤差の範囲だと思います」も成立すると思いますが。
jurinayuria11

2019/05/07 06:03

どちらにしろ自分で調べたらこっちだったので
HS4400

2020/03/13 03:29

自分も全く同じ状況です。 本書に問い合わせてみたので、回答を待ちます。
guest

回答2

0

本書に問い合わせて回答を貰えたので、報告します。
確認して頂いたところ現在は「東京駅」で検索すると、表示位置が南にずれてしまうそうです。
「東京タワー」で検索して、正常に動けば、プログラムとして問題ないそうです。

自分も最初はシミュレーターの問題かと思い、実機でテストしましたが、
「東京駅」は同じく南にずれました。
ちなみに「東京タワー」では動作しません。

プログラムの問題というよりは、Mapkitの問題かもしれません。

投稿2020/03/14 01:18

HS4400

総合スコア17

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

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

0

投稿2019/04/16 15:07

nakasho_dev

総合スコア2655

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問