如何识别哪个GMSMarker被挖掘 - iOS,Swift

Don*_*n G 4 google-maps google-maps-markers ios google-maps-sdk-ios swift

我对Swift很新,我正在努力更好地理解Google Maps API.我正在构建一个简单的应用程序,通过didTapMarker方法点击panoramaView上的标记时显示图像.由于每个标记应该显示不同的图像,我试图找到一种方法来识别哪个标记已被点击,一种标记标记.欢迎所有建议.

这里是一个代码的原型,有2个标记和2个图像.不确定如何做,但didTapMarker方法应该显示randomImage何时marker被点击以及randomImage2何时marker2被点击.到目前为止,只显示randomImage当两个markermarker1被窃听.

import UIKit
import GoogleMaps

class ViewController: UIViewController, GMSPanoramaViewDelegate {

@IBOutlet weak var viewStreet: UIView!
@IBOutlet weak var randomImage: UIImageView!
@IBOutlet weak var randomImage2: UIImageView!

var panoView: GMSPanoramaView!

override func viewDidLoad() {
    super.viewDidLoad()

    randomImage.hidden = true
    randomImage2.hidden = true

    let panoView = GMSPanoramaView(frame: CGRectMake(200, 200, 400, 400))
    panoView.delegate = self
    panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312))

    viewStreet.addSubview(panoView)
    viewStreet.sendSubviewToBack(panoView)

    let position = CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312)
    let marker = GMSMarker(position: position)
    marker.panoramaView = panoView

    let position2 = CLLocationCoordinate2D(latitude: -33.732, longitude: 150.311)
    let marker2 = GMSMarker(position: position2)
    marker2.panoramaView = panoView
}

func panoramaView(panoramaView: GMSPanoramaView, didTapMarker marker: GMSMarker) -> Bool {

    randomImage.hidden = false
    randomImage2.hidden = true
    return true
}
}
Run Code Online (Sandbox Code Playgroud)

编辑:解决了,感谢大家,我正在添加一个关于如何做到这一点的简单例子.

 marker.userData = "example" 
Run Code Online (Sandbox Code Playgroud)

然后didTapMarker在点击标记时总是调用方法,但randomImage只有在点击的标记是上面的标记时才将其设置为假.

 func panoramaView(panoramaView: GMSPanoramaView, didTapMarker marker: GMSMarker) -> Bool {

    if marker.userData as? String == "example" {
         randomImage.hidden = false
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

可以使用字典来处理多个标记来改进代码,但这取决于您.:)

小智 7

将该标记的数据放在该标记的userData中.利用在didTapInfoWindowOfMarker api中点击标记的情况.