2017-06-01 2 views
0

Ich habe einige GMSPolygon in meiner Karte:Tap GMSPolygon Swift

let españa = GMSMutablePath() 
    españa.add(CLLocationCoordinate2D(latitude: 42.11, longitude: -9.37)) 
    españa.add(CLLocationCoordinate2D(latitude: 43.94, longitude: -9.55)) 
    españa.add(CLLocationCoordinate2D(latitude: 43.60, longitude: -1.89)) 
    españa.add(CLLocationCoordinate2D(latitude: 42.02, longitude: 3.72)) 
    españa.add(CLLocationCoordinate2D(latitude: 36.16, longitude: -2.65)) 
    españa.add(CLLocationCoordinate2D(latitude: 37.10, longitude: -7.28)) 
    españa.add(CLLocationCoordinate2D(latitude: 42.08, longitude: -6.61)) 

let polygonEspaña = GMSPolygon(path: españa) 
    polygonEspaña.fillColor = UIColor(red : 0, green: 0, blue: 0, alpha: 0.05); 
    polygonEspaña.strokeColor = .black 
    polygonEspaña.strokeWidth = 2 
    polygonEspaña.map = myMapView 
    polygonEspaña.isTappable = true 

ich tippen möchte, dass sie einige Funktionen zu machen.

I implementiert diese Methode:

import UIKit 
import GoogleMaps 



class ViewController: UIViewController, CLLocationManagerDelegate, GMSMapViewDelegate { 
} 

Als ich sie tippen nichts passieren.

// ###### Click Country 


private func myMapView(_ myMapView: GMSMapView, didTap overlay: GMSOverlay) { 
    print("User Tapped Layer: \(overlay)") 
} 

Ich denke, dass ich ein Problem in meinem GMSMapViewDelegate habe, aber ich kann es nicht beheben lassen, wie ich das tun könnte?

EDIT: Ich habe das auch schon.

// ##### MAPA 


    let mapCenter = GMSCameraPosition.camera(withLatitude: 48.23, 
              longitude: 16.35, 
              zoom: 3) 

    myMapView.camera = mapCenter 
    myMapView.setMinZoom(1, maxZoom: 8) 

    myMapView.delegate = self 


    // #### Estilo de mapa 


    do { 
     if let styleURL = Bundle.main.url(forResource: "style", withExtension: "json") { 
      myMapView.mapStyle = try GMSMapStyle(contentsOfFileURL: styleURL) 
     } else { 
      NSLog("Unable to finde style.json") 
     } 
    } catch { 
     NSLog("One or more of the map styles failed to load. \(error)") 
    } 

Dank

+0

Haben Sie diese Linie? : myMapView.delegate = self – Beninho85

+0

ja, ich habe es. und auch ein MapStyle funktioniert einwandfrei. Danke –

+0

Hat meine Antwort geholfen? – eshirima

Antwort

0

Zunächst vielen Dank für meine Antwort aus this Frage mit :)

Warum haben Sie die delegierte Methode private machen? Ich denke, das könnte der Grund sein, warum er nicht angerufen wird. Entfernen Sie es.

+0

Sorry, aber ich weiß nicht über private Methode. Wie kann man es entfernen? Vielen Dank! –

+0

Verwenden Sie einfach die Rücktaste, um das Wort 'private' von der Funktion selbst zu löschen. Ihre Funktion sollte also 'func myMapView (_ myMapView: GMSMapView, didTap overlay: GMSOverlay) 'anstelle von' private func myMapView (_ myMapView: GMSMapView, didTap overlay: GMSOverlay) sein ' – eshirima

+0

Ich habe es gemacht und funktioniert immer noch nicht. Ich habe auch Standort func und funktioniert nicht. // ###### Klicken Sie auf Land func myMapView (_ myMapView: GMSMapView, didTap Overlay: GMSOverlay) { print ("User Stampfschicht: \ (Overlay)") } // # ### Finde den Ort in der Konsole. func Lage (_ myMapView: GMSMapView, didTapAt Koordinate: CLLocationCoordinate2D) { print ("Sie bei \ (coordinate.latitude) angezapft, \ (coordinate.longitude)") } –

0

Schließlich funktioniert es.

hatte ich ein Problem mit meinem Dia-Menü:

RevealViewController 

Ich weiß nicht, warum mit dem RevealViewController, Funktionen aus:

GSMapViewDelegate 

nicht

Jetzt i funktionieren, wenn Tippe auf mein Polygon Ich erhalte einen Text in der Konsole.

Aber ich habe die vollständigen Informationen über mein Polygon, ich brauche den Namen davon.

Zum Beispiel, wenn ich in Spanien klicke, möchte ich erhalten "Ihr werden in Spanien erschlossen".

Danke

Verwandte Themen