Geocoding
Geocode an address from a search query and zoom to that location on the map.
import Foundation
import UIKit
import TrimbleMaps
import TrimbleMapsAccounts
import TrimbleMapsWebservicesClient
class GeocodingViewController: UIViewController, AccountManagerDelegate, TMGLMapViewDelegate {
    internal var mapView: TMGLMapView!
    override func viewDidLoad() {
        super.viewDidLoad()
        let apiKey =  "Your-API-key-here"
        let account = Account(apiKey: apiKey, region: Region.northAmerica)
        AccountManager.default.account = account
        AccountManager.default.delegate = self
    }
    func stateChanged(newStatus: AccountManagerState) {
        if AccountManager.default.isLicensed(licensedFeature: .mapsSdk) {
            if newStatus == .loaded {
                DispatchQueue.main.async {
                    // Create a map view
                    self.mapView = TMGLMapView(frame: self.view.bounds)
                    self.mapView.delegate = self
                    // Add the map
                    self.view.addSubview(self.mapView)
                }
            }
        } else {
            // Handle the case where the account is not licensed for Maps SDK
            print("Account is not licensed for Maps SDK")
        }
    }
    func mapViewDidFinishLoadingMap(_ mapView: TMGLMapView) {
        // Geocode
        self.geocode()
    }
    func geocode() {
        let geocoder = TMGeocoderClient()
        let params = TMGeocoderParams(region: "NA", query: "1 Independence Way Princeton NJ 08540")
        geocoder.geocode(params) { result, error in
            guard let result = result, !result.locations.isEmpty, error == nil else {
                return
            }
            // Zoom to that location
            if let coords = result.locations[0].coords, let lat = Double(coords.lat ?? ""), let lon = Double(coords.lon ?? "") {
                self.mapView.setCenter(CLLocationCoordinate2D(latitude: lat, longitude: lon), zoomLevel: 11, animated: true)
                print("coords: \(lat) \(lon)")
            }
        }
    }
}