2

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

コードを改善して、複数のマーカーを処理する辞書を使用することができますが、それはあなた次第です。 :)

+0

1つのアプローチは、GMSMarkerを 'dictionary [GMSMarker:UIImageView]'のキーとして使用することです。 – Paulw11

+0

@ Paulw11、ありがとう! –

+1

'GMSMarker'の' userData'プロパティを何か(例えば、表示するイメージやイメージのIDなど)に設定することができます。 –

答えて

4

そのマーカーのデータをそのマーカーのuserDataに配置します。 didTapInfoWindowOfMarker APIでマーカーがタップされるたびにそのことを利用してください。

+0

だから 'marker.userData = randomImage'、okです。それではどうしたらいいですか?私はメソッド 'didTapInfoWindowOfMarker'を使用することができません。私が知っている限り、それをサポートしていないPanoramaViewにマーカーを配置しています。タイと恩赦、私はまだ学んでいます。 –

+0

'GMSPanoramaViewDelegate'で' panoramaView:didTapMarker: 'を使うことができるようです。 –

+0

@SaxonDruceさんの情報を得て解決しました。最初の投稿をサンプルで編集しました。 :) –

関連する問題