swiftswift4mapboxpolylinemglmapview

Is it possible to make MGLPolyLines selectable? - Swift, MapBox


Is it possible to make an MGLPolyLine touchable/selectable/have user interaction? In my project, the user needs to touch the polyline. There was this question asked before but it is outdated by about 2 years. Have they (MapBox) updated this?


Solution

  • I've just checked back and it looks like this has been implemented though I'm not sure which Mapbox release rolled this out.

    If you take a look at the simple Mapbox example, Annotation Models, that demos an MGLPolyline and interspaced circular annotations, you can make a simple mod to the supplied code and see for yourself. The demo looks like this:

    enter image description here

    If you look into the viewController code, add a couple of lines below the polyline creation:

    let polyline = CustomPolyline(coordinates: &coordinates, count: UInt(coordinates.count))
    
    polyline.title = "Polyline"               // New line
    polyline.subtitle = "Pretty Poly".        // New line
    
    // Set the custom `color` property, later used in the `mapView:strokeColorForShapeAnnotation:` delegate method.
    polyline.color = .darkGray
    

    Now you can tap and see a basic callout:

    enter image description here

    This example subclasses MGLPolyline (CustomPolyline) so that its appearance can be altered slightly but that doesn't change anything with regards to the tappability.