swift - 通过在 map 上滑动来拖动 GoogleMaps-Marker

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

我有一个 Google-Map + 标记。我知道如何使标记可拖动。标准行为是“长按”标记,您可以拖动它。 我想要的是通过在 map 上滑动来拖动标记。不必击中标记。用户在 map 上从左向右滑动,同时标记从左向右改变位置,距离等于滑动长度。

我在 GM-API 中找不到合适的解决方案。有什么想法吗?

我正在使用 Swift 2.2

var marker: GMSMarker!   

func createMarker(title: String, target: CLLocationCoordinate2D) {
    marker = GMSMarker(position: target)
    marker.appearAnimation = kGMSMarkerAnimationPop
    marker.map = map
}

func activateDragMode() {
    marker.draggable = true
    map.settings.scrollGestures = false
    map.settings.zoomGestures = false
    map.settings.rotateGestures = false
}

最佳答案

GoogleMap-API 没有提供我需要的方法。但我找到了解决方案:

map.settings.consumesGesturesInView = false
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(panRecognition))
view.addGestureRecognizer(panGestureRecognizer)

func panRecognition(recognizer: UIPanGestureRecognizer) {
    if marker.draggable {
        let markerPosition = map.projection.pointForCoordinate(marker.position)
        let translation = recognizer.translationInView(view)
        recognizer.setTranslation(CGPointZero, inView: view)
        let newPosition = CGPointMake(markerPosition.x + translation.x, markerPosition.y + translation.y)
        marker.position = map.projection.coordinateForPoint(newPosition)
    }
}

我必须停用“consumesGesturesInView”才能添加我自己的 PanGestureRecognizer,它可以操纵标记。

关于swift - 通过在 map 上滑动来拖动 GoogleMaps-Marker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38526688/

相关文章:

javascript - 在谷歌地图上显示和隐藏标记

ios - 在 ios 的 google maps sdk 中使用名称搜索位置

ios - 谷歌地图自定义夜间模式 iOS

快速使用方法参数的语法

swift - 在 Swift iOS 中设置设备方向

ios - 理解 UIBezierPath 曲线机制、controlPoint 和曲线点

ios - 支持共享表建议

ios - 如何在 Google map (GMS MapKit)上添加 iOS 放大镜效果

javascript - 如何使用 Handlebars 将多个 Google map 区域附加到 div

swift - google maps iOS swift 中的自定义标记 InfoWindow?