我不知道什么是正确的问题,因此我的标题可能不适当描述,为此道歉。我想实现如上图所示的功能。现在在我的项目中,我有两个 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)")
}