2017-04-05 19 views
2

私はGoogle Maps iOSアプリを構築していて、何らかの理由で「didTapマーカー」機能が動作しません。マップ上のマーカーをタップすると、ビュー全体が単に左にドラッグされますが、コードは実行されません。それ以外の場合は、以下の印刷機能が動作します。この問題の原因はどこですか?私の 'didTapマーカー'機能が機能しないのはなぜですか?

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker){ 
    var lat: CLLocationDegrees = marker.position.latitude 
    var lng: CLLocationDegrees = marker.position.longitude 
    var formattedCoordinate = CLLocationCoordinate2D(latitude: lat,longitude: lng) 
    print("markersArray is \(markersArray)") 
    print("formattedCoordinate is \(formattedCoordinate)") 
    markersArray = markersArray.filter({ !(($0.latitude == formattedCoordinate.latitude) && ($0.longitude == formattedCoordinate.longitude)) }) 
} 
+0

これはデリゲートメソッドではありませんか? mapViewのデリゲートを設定しましたか? – Larme

+0

デリゲートメソッドです。私はmapViewのデリゲートをどのように設定するのか分からないので、デリゲートメソッドとして認識されていると思っていたので、これは機能するはずです。 – konyv12

+0

編集:私は以前mapViewのデリゲートを自己 – konyv12

答えて

5

mapviewに代理人を設定する必要があります。 viewDidLoad

myGMSMapView.delegate = self 

セットデリゲートは、あなたのクラスで、このデリゲートを追加

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool { 
     <#code#> 
    } 
+0

私はいつも戻り値の型を追加する必要がありますか?戻り値の型を指定せずに機能するいくつかの関数があります。 – konyv12

+0

戻り値の型を追加する必要があるデリゲートメソッドについては明らかです –

0

このメソッドを使用します。

GMSMapViewDelegate 

これがマーカーアクションになります。

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool { 

    mapView.delegate = self 

    print("You tapped : \(marker.position.latitude),\(marker.position.longitude)") 
} 
関連する問題