私はSwiftにはかなり新しく、Google Maps APIについてよく理解しようとしています。私は、パノラマビューのマーカーがdidTapMarkerメソッドでタップされているときに画像を表示する簡単なアプリケーションを構築しています。各マーカーは異なる画像を表示する必要があるため、どのマーカーがタップされたかを識別する方法、つまりマーカータグの種類を見つけることを試みています。 すべての提案を歓迎します。どのGMSMarkerがタップされたかを特定する方法 - iOS、Swift
ここに、2つのマーカーと2つの画像を持つコードのプロトタイプがあります。どのように行うかは分かりませんが、がタップされている場合はrandomImage
と表示され、がタップされた場合はrandomImage2
と表示されます。これまでのところ、と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
メソッドが常に呼び出されますが、タップマーカーは上記1の場合にのみrandomImage
の適否はfalseに設定されています。
func panoramaView(panoramaView: GMSPanoramaView, didTapMarker marker: GMSMarker) -> Bool {
if marker.userData as? String == "example" {
randomImage.hidden = false
}
return true
}
コードを改善して、複数のマーカーを処理する辞書を使用することができますが、それはあなた次第です。 :)
1つのアプローチは、GMSMarkerを 'dictionary [GMSMarker:UIImageView]'のキーとして使用することです。 – Paulw11
@ Paulw11、ありがとう! –
'GMSMarker'の' userData'プロパティを何か(例えば、表示するイメージやイメージのIDなど)に設定することができます。 –