Search for places by category
This example does not contain a UI. Results will be printed to the Xcode console.
import UIKitimport MapboxSearch class SimpleCategorySearchViewController: MapsViewController {let searchEngine = CategorySearchEngine()// let searchEngine = CategorySearchEngine(accessToken: "<#You can pass access token manually#>") override func viewDidAppear(_ animated: Bool) {super.viewDidAppear(animated) searchEngine.search(categoryName: "cafe") { (response) indo {let results = try response.get()print("Number of category search results: \(results.count)") for result in results {print("\tResult coordinate: \(result.coordinate)")} self.showAnnotations(results: results)} catch {print("Error during category search: \(error)")}}}}
import UIKitimport MapboxMapsimport MapboxSearchimport MapboxSearchUI class MapsSearchViewController: UIViewController {var searchController = MapboxSearchController()var mapView: MapView?var annotationManager: PointAnnotationManager? override func viewDidLoad() {super.viewDidLoad() // Search setupsearchController.delegate = selflet panelController = MapboxPanelController(rootViewController: searchController)addChild(panelController) // Map setuplet mapView = MapView(frame: view.bounds)mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight]self.mapView = mapViewview.addSubview(mapView) annotationManager = mapView.annotations.makePointAnnotationManager()} func showResults(_ results: [SearchResult]) {let annotations = results.map { searchResult -> PointAnnotation invar annotation = PointAnnotation(coordinate: searchResult.coordinate)annotation.textField = searchResult.nameannotation.textOffset = [0, -2]annotation.textColor = ColorRepresentable(color: .red)annotation.image = .defaultreturn annotation} annotationManager?.syncAnnotations(annotations)if case let .point(point) = annotations.first?.feature.geometry {let options = CameraOptions(center: point.coordinates)mapView?.mapboxMap.setCamera(to: options)}}} extension MapsSearchViewController: SearchControllerDelegate {func categorySearchResultsReceived(results: [SearchResult]) {showResults(results)} func searchResultSelected(_ searchResult: SearchResult) {showResults([searchResult])} func userFavoriteSelected(_ userFavorite: FavoriteRecord) {showResults([userFavorite])}}
Was this example helpful?