2

저는 Swift에 아주 익숙하며 Google Maps API를 더 잘 이해하려고합니다. 나는 didTapMarker 메서드를 통해 panoramaView의 마커를 두드리면 이미지를 보여주는 간단한 앱을 만들고 있습니다. 각 마커는 서로 다른 이미지를 보여야하기 때문에 마커 태그를 식별 할 수있는 방법을 찾고 있습니다. 모든 제안을 환영합니다.어떤 GMSMarker를 탭했는지 식별하는 방법 - iOS, Swift

아래에는 2 개의 마커와 2 개의 이미지가있는 코드의 프로토 타입이 있습니다. 어떻게해야하는지 잘 모르겠지만, 이 도청 될 때 을 표시하고 marker2을 탭한 경우 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 
} 
} 

EDIT : 모두 덕분에 해결 방법을 알려 드리겠습니다. 마커가 도청 될 때

marker.userData = "example" 

은 다음 didTapMarker 방법은 항상 호출되지만 탭 마커 위의 하나 인 경우에만 randomImage의 타당성은 false로 설정됩니다.

사전을 사용하여 여러 마커를 처리하도록 코드를 개선 할 수 있지만 사용자가 결정해야합니다. :)

+0

한 가지 방법은 GMSMarker를 사전 [GMSMarker : UIImageView]' – Paulw11

+0

@ Paulw11에 대한 열쇠로 사용하는 것입니다. 감사합니다. –

+1

'GMSMarker'에'userData' 속성을 설정할 수 있습니다 (예 : 표시 할 이미지 또는 이미지 ID 등). –

답변

4

해당 마커의 userData에 해당 마커의 데이터를 입력하십시오. didTapInfoWindowOfMarker API에서 마커가 탭될 때마다이를 사용하십시오.

+0

그래서'marker.userData = randomImage'입니다. 그렇다면 어떻게해야합니까? 내가 didTopInfoWindowOfMarker 메서드를 사용할 수 없습니다 왜냐하면 내가 아는 한 그것을 지원하지 않는 PanoramaView에 마커를 배치하고 있기 때문입니다. 타이와 용서, 나는 아직도 배우고있다. –

+0

'GMSPanoramaViewDelegate'에서'panoramaView : didTapMarker :'를 사용할 수있는 것처럼 보입니다. –

+0

@SaxonDruce ty 정보를 위해 해결되었습니다. 샘플을 사용하여 첫 번째 게시물을 수정했습니다. :) –

관련 문제