Is there way to detect on the on the screen if a user double taps on marker? or if they tap and hold the screen for a certain amount of time?
Mapbox has the below method that returns true, which signals to show information about the current place/marker. What will be the best way to check if the user clicks on this white section or double taps the current marker?
Thank you in advance!
/* Tapping the marker */
func mapView(mapView: MGLMapView!, annotationCanShowCallout annotation: MGLAnnotation!) -> Bool {
return true
/*THIS WHERE THE TAP IS BEING RECOGNIZED,
return true here allows the information about the current marker (name and address)*/
}//eom
import UIKit
import MapboxGL
import CoreLocation
class ViewController: UIViewController, MGLMapViewDelegate , CLLocationManagerDelegate {
private var currLocLatitude:CLLocationDegrees = 28.43173
private var currLocLongitude:CLLocationDegrees = -81.4704
private var currLocTitle:String = "Tommy Bahama"
private var currLocSubtitle:String = "9101 International Drive #1200, Orlando, FL 32819, United States"
var mapView:MGLMapView!
private var MapBoxAccessToken = "pk.eyJ1IjoiZGFya2ZhZGVyIiwiYSI6IlplV6hfR3MpfQ.pPEz732qS8g0WEScdItakg"
/* defining the marker from MyAnnotation.swift */
func mapView(mapView: MGLMapView!, symbolNameForAnnotation annotation: MGLAnnotation!) -> String! {
return "secondary_marker"
}
/**/
override func viewDidLoad() {
super.viewDidLoad()
self.createMapBoxMap()
}//eom
/**/
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*************** MapBox Methods **********/
//method creating the mapbox map
private func createMapBoxMap(){
//type of map style
self.mapView = MGLMapView(frame: view.bounds, accessToken: MapBoxAccessToken)
self.mapView.autoresizingMask = .FlexibleWidth | .FlexibleHeight
//setting the map's center coordinate
self.mapView.setCenterCoordinate(CLLocationCoordinate2D(latitude: self.currLocLatitude, longitude: self.currLocLongitude),
zoomLevel: 12, animated: true)
self.view.addSubview(mapView)
/*define the marker and its coordinates, title, and subtitle:*/
self.mapView.delegate = self // Set the delegate property of our map view to self after instantiating it.
// Declare the marker `ellipse` and set its coordinates, title, and subtitle
let ellipse = MyAnnotation(location: CLLocationCoordinate2D(latitude: self.currLocLatitude, longitude: self.currLocLongitude),
title: self.currLocTitle, subtitle: self.currLocSubtitle)
self.mapView.addAnnotation(ellipse) // Add marker `ellipse` to the map
self.mapView.showsUserLocation = false //shows the current positions
}//eom
/* Tapping the marker */
func mapView(mapView: MGLMapView!, annotationCanShowCallout annotation: MGLAnnotation!) -> Bool {
return true
/*THIS WHERE THE TAP IS BEING RECOGNIZED,
return true here allows the information about the current marker (name and address)*/
}//eom
}//eoc
To detect the touch of the user on the white section (callout of annotation), you can use the following method :
See mapbox documentation for more info : https://www.mapbox.com/ios-sdk/api/3.0.0/Protocols/MGLMapViewDelegate.html#//api/name/mapView:tapOnCalloutForAnnotation: