2016-11-22 12 views
9

मैं अपने Google मानचित्र पर खींची गई जीएमएसपीओलाइन पर एक टैप का पता लगाने के साथ संघर्ष कर रहा हूं, यह जीएमएसपीलीगोन के साथ ठीक काम करता है, लेकिन एक ही दृष्टिकोण पॉलीलाइन के साथ काम नहीं कर रहा है। मेरे वर्तमान दृष्टिकोण है, जो polygones लिए काम करता है, यह है:स्विफ्ट में जीएमएसपीलाइनलाइन पर टैप का पता लगाएं?

if (GMSGeometryContainsLocation(coordinate, polygon.path!, false)) { 
    ... 
} 

कोई सुझाव है कि कैसे एक पॉलीलाइन पर नल का पता लगाने के लिए? या बस इसके करीब?

उत्तर

7
उनके एपीआई documentation है, जो एक GMSPolyline का मतलब संपत्ति tappable है GMSOverlay से GMSPolyline inherits के अनुसार

। तो आप इस

let polyLine: GMSPolyline = GMSPolyline(path: newPath) 
polyLine.isTappable = true 
polyline.map = yourGoogleMap 

की तरह कुछ फिर अपने GMSMapViewDelegate आप नल का कहीं भी GMSPolyline परत के भीतर इस समारोह

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

साथ सूचित आप GMSPolyline की isTappable संपत्ति का उपयोग कर सकते चाहिए चाहते हैं।

isTappable

तो इस ओवरले नल अधिसूचना का कारण होना चाहिए।

polyline.isTappable = सच GMSOverlay से

GMSPolyline इनहेरिट करती है। तो ओवरले GMSMapViewDelegate एक प्रतिनिधि तरीका प्रदान करता है पर नल का पता लगाने के:

  • MapView: didTapOverlay: कहा जाता है के बाद एक उपरिशायी उपयोग किया गया है।

जब भी पॉलीलाइन उपयोग किया जाता है, GMSMapViewDelegate विधि didTapOverlay

func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay) { 
     //Write your code here 
    } 

भी कहा जाता है, क्योंकि यह भी GMSOverlay से विरासत इस विधि GMSPolygon के लिए इस्तेमाल किया जा सकता है।

अधिक जानकारी के लिए https://developers.google.com/maps/documentation/ios-sdk/reference/protocol_g_m_s_map_view_delegate-p.html#a3a2bf2ff4481528f931183cb364c0f4b

देखें
संबंधित मुद्दे