2017-03-29 16 views
0

私は2つのView Controllerを持っています。一つは、ユーザーが物事の独自の目撃情報を入力することができます:MKMapViewをオフセットして、指定したポイントに座標を配置する方法

SubmitSightingsVC

他は、彼らの提出した目撃情報を見ることができますのUITableViewControllerです:

SightingsEditVC

私が欲しい何のためにありますユーザは第2VCの視力をクリックし、第1VCに関連する詳細を入力することができる。私が使用してテキストフィールドのために働いていることがあります。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    let pvc = self.navigationController?.previousViewController() as! SubmitSightingVC 
    let sighting = sightingsArray[indexPath.row] 
    pvc.titleTextField.text = sighting["title"] as! String? 
    pvc.locationTextField.text = sighting["location"] as! String? 
    pvc.dateTextField.text = sighting["date"] as! String? 
    pvc.descriptionTextView.text = sighting["sightingDesc"] as! String? 

    let pinArray = ["1", "2", "3", "4", "5"] 
    let pinTextArray = ["1text", "2text", "3text", "4text", "5text"] 
    var pinImageArray = [#imageLiteral(resourceName: "1"), #imageLiteral(resourceName: "2"), #imageLiteral(resourceName: "3"), #imageLiteral(resourceName: "4"), #imageLiteral(resourceName: "5")] 
    let pinIconString = sighting["pinIcon"] as! String 
    let index = pinArray.index(of: pinIconString) 

    pvc.pinImageView.image = pinImageArray[index!] 
    pvc.pinTextField.text = pinTextArray[index!] 


    // Bit I'm struggling with: 
    var coordinates = CLLocationCoordinate2D(latitude: sighting["latitude"] as! Double, longitude: sighting["longitude"] as! Double) 
    pvc.mapView.centerCoordinate = coordinates 

    self.navigationController!.popViewController(animated: true) 

} 

問題は、地図の中心がぼやけビューの背後にあるので、それがオフセットされていることです。マップ上のピンは実際のピンではなく、UIImage(pinImageView)です。座標がmapViewの中心でなく、このpinImageの下にあるようにマップを移動するにはどうすればよいですか?上述したように

+0

'MKMapCamera'を見てください。あなたが望むものを中心に地図をオフセットするのに使うことができます。 Docs:https://developer.apple.com/reference/mapkit/mkmapcamera – rmp

答えて

1

あなたは、マップのビューを配置するか、またsetVisibleMapRectを使用して、このようなマップを配置するためにいくつかのパディングを追加することができますMKMapCameraを使用することができます。

self.mapView.setVisibleMapRect(self.mapView.visibleMapRect, edgePadding: UIEdgeInsetsMake(200.0, 0.0, 0.0, 0.0), animated: true) 

これは200で、中心をオフセットします画面の上部にあるピクセル。

+0

こんにちは、提案していただきありがとうございます。これは、私はマップをオフセットする距離を取得しようと苦労しているが、それが動作するように思える。 "let offset = pinImageView.center.y - mapView.center.y" だが、マップはどこにあるべきかに近いところでまだオフになっていると仮定した。これがオフセットを計算する正しい方法であるかどうか知っていますか? – ghertyish

+0

それはあなたがそれをどのようにレイアウトしたかによって決まりますが、理論的には正しい軌道に乗っています。上のスクリーンショットで描いた半透明のビューは、オフセットを計算するのに使うことができ、単にその高さを使用するように見えます。 – rmp

関連する問題