0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

地図アプリの不具合を修正

Last updated at Posted at 2021-07-03

前回までの問題点の修正

携帯上でアプリを実行してみると、以下の問題が発生した。
・ドラッグで地図上のカメラの位置を変更
→自己位置更新の際に呼ばれる関数が呼ばれ?、カメラが自己位置に戻る。

修正案

  • 自己位置が更新されたと判定される精度を下げて対応。
    現在設定している精度は以下の通り、再構精度
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    これを以下に変更し、更新される精度を100mとした。
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
    結果は変わらず。

  • ドラッグが始まったタイミングで、カメラが自己位置に戻る処理を通らないようにする。

delegateを設定し、マップ上をタップした時に呼ばれる関数内に処理を記載

class ViewController: UIViewController,GMSMapViewDelegate

// ViewDidLoad
mapView.delegate = self

func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {
    NSLog("タッチを検知しました。")
    // To Do
}

ドラッグの時は呼ばれないので却下。

  • OnCameraMoveStaratedなる、カメラ位置が移動した時に呼ばれるメソッドがあることを発見
    アンドロイドだけだった。

  • ちゃんとドラッグ開始を検出する関数も用意されてました。

func mapView(_ mapView: GMSMapView, willMove gesture: Bool){
    NSLog("ドラッグを開始しました。")
    // Todo
}

これで、カメラが自己位置に戻ってしまう問題が解決。
逆に、カメラを自己位置に戻すための処理を追加する。
ボタンを配置して、押すとカメラが自己位置に戻るようにした。

hereButton = UIButton(frame: CGRect(x: UIScreen.main.bounds.width-80 ,y: UIScreen.main.bounds.height-80  ,width: 60, height: 60))
hereButton.backgroundColor = .lightGray
hereButton.layer.cornerRadius = 30.0
hereButton.setTitle("◉", for: .normal)
hereButton.setTitleColor(.white, for: .normal)
hereButton.addTarget(self, action: #selector(pushHereButton), for: .touchUpInside)
self.view.addSubview(hereButton)

@objc func pushHereButton(_ button: UIButton) {
    // ToDo
    camera = GMSCameraPosition.camera(withTarget: myPos,zoom: ZOOM)
    self.mapView.animate(to: camera)
}

適当にカメラを移動させて、右下のボタンを押下
スクリーンショット 2021-07-03 22.36.32.png

LGTM!
スクリーンショット 2021-07-03 22.36.47.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?