修复谷歌地图上的标记,然后再移动它

时间:2017-11-24 19:39:16

标签: ios swift swift4 google-maps-sdk-ios

enter image description here

enter image description here

我不知道什么是正确的问题,因此我的标题可能不适当描述,为此道歉。我想实现如上图所示的功能。现在在我的项目中,我有两个 textField starttxtField destTextField 。当我选择 starttxtField 时,包含图像的 imageView 就会像针一样出现在地图中间,我可以获得 lat lan 那个地方,没问题。我也可以用 destTextField 做类似的事情。现在我怎么能像上面的图片那样做,当我选择 starttxtField 时, imageView 就像一个引脚,我可以选择一个地方,当我选择 destTextField 上一个图钉将保留在地图中,并在移动地图时移动。当我选择 destTextField 时, imageView 将显示为图钉,但当我选择 starttxtField 时,之前的图钉会粘在所选位置可以在移动地图时移动。希望我能说清楚我的问题。

包含标记的 imageView 是这样的:

let startMarkerView: UIImageView = {
    let imageView = UIImageView()
    imageView.image = UIImage(named: "startMarker1")
    imageView.clipsToBounds = true
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.contentMode = .scaleAspectFit
    return imageView
}()

图像视图的约束是:

 // need x, y, width & height constraints
 startMarkerView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
 startMarkerView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
 startMarkerView.widthAnchor.constraint(equalToConstant: 30).isActive = true
 startMarkerView.heightAnchor.constraint(equalToConstant: 30).isActive = true

首先我添加 startMarkerView 子视图并将其隐藏,当 textField 开始编辑时,它变得可见,没问题。我的谷歌地图功能是:

 func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {

 let startCoordinate = mapView.projection.coordinate(for: startMarkerView.center)
 print("myLatitude " + "\(startCoordinate.latitude)" + " myLongitude " + "\(startCoordinate.longitude)")

  let endCoordinate = mapView.projection.coordinate(for: endMarkerView.center)
  print("myLatitude " + "\(endCoordinate.latitude)" + " myLongitude " + "\(endCoordinate.longitude)")


}

0 个答案:

没有答案