ios - 如何识别哪个 GMSMarker 被点击 - iOS, Swift

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

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

下面是带有 2 个标记和 2 个图像的代码原型(prototype)。不太确定该怎么做,但是 didTapMarker 方法应该在点击 marker 时显示 randomImage ,在点击 marker2 时显示 randomImage2被窃听。到目前为止,它仅在同时点击 markermarker1 时显示 randomImage

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
}
}

编辑:解决了,感谢大家,我添加了一个简单的例子来说明如何做到这一点。

 marker.userData = "example" 

然后 didTapMarker 方法总是在点击标记时被调用,但是 randomImage 的属性仅当点击的标记是上面的标记时才设置为 false。

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

    if marker.userData as? String == "example" {
         randomImage.hidden = false
    }
    return true
}

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

最佳答案

将该标记的数据放入该标记的 userData 中。每当在 didTapInfoWindowOfMarker api 中点击标记时,就利用它。

关于ios - 如何识别哪个 GMSMarker 被点击 - iOS, Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37846149/

相关文章:

java - android sqlite 游标到映射适配器

javascript - Cordova OnsenUI 应用程序中的 Google map V3( map 显示在浏览器中,但不在手机上)

iOS UISlider - 更改价格值

ios - 具有与多个子类共享的 BaseGame 类的单个 GKScene

ios - iOS 中的 TCP 流和调度

javascript - 在谷歌地图 v3 中淡化 map /添加透明层

ios - 带有自定义单元格的 TableViewController swift

ios - UITableView 数据源/重新加载竞争条件

ios - 使用闭包快速调用 Objective-C 函数

ios - 我能否以编程方式获取 Storyboard XML 代码?