如何识别点击了哪个 GMSMarker - iOS、Swift
How to identify which GMSMarker was tapped - iOS, Swift
我对 Swift 很陌生,我正在努力更好地理解 Google 地图 API。我正在构建一个简单的应用程序,当通过 didTapMarker 方法点击 panoramaView 上的标记时,它会显示图像。由于每个标记都应显示不同的图像,因此我试图找到一种方法来识别哪个标记已被点击,一种标记标签。
欢迎所有建议。
下面是带有 2 个标记和 2 个图像的代码原型。不太确定该怎么做,但是 didTapMarker 方法应该在点击 marker
时显示 randomImage
并且在点击 marker2
时显示 randomImage2
。到目前为止,它仅在同时点击 marker
和 marker1
时显示 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
}
可以使用字典来改进代码来处理多个标记,但这取决于您。 :)
将该标记的数据放入该标记的用户数据中。每当在 didTapInfoWindowOfMarker api.
中点击标记时,请利用它
我对 Swift 很陌生,我正在努力更好地理解 Google 地图 API。我正在构建一个简单的应用程序,当通过 didTapMarker 方法点击 panoramaView 上的标记时,它会显示图像。由于每个标记都应显示不同的图像,因此我试图找到一种方法来识别哪个标记已被点击,一种标记标签。 欢迎所有建议。
下面是带有 2 个标记和 2 个图像的代码原型。不太确定该怎么做,但是 didTapMarker 方法应该在点击 marker
时显示 randomImage
并且在点击 marker2
时显示 randomImage2
。到目前为止,它仅在同时点击 marker
和 marker1
时显示 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
}
可以使用字典来改进代码来处理多个标记,但这取决于您。 :)
将该标记的数据放入该标记的用户数据中。每当在 didTapInfoWindowOfMarker api.
中点击标记时,请利用它