首页 > 解决方案 > 如何获得我之前分配的标记位置?ios迅捷

问题描述

我分配了一些值以在谷歌地图中显示标记。当我单击标记时,我想将此标记的数据传递给另一个控制器。

class MapsViewController: UIViewController {
    var title_map : String = ""
    @IBOutlet weak var googleMapsview: GMSMapView!
    var geosearch : [Geosearch]?
    private var locationManager = CLLocationManager()
    override func viewDidLoad() {
        super.viewDidLoad()
       // self.map_api_call()
       // self.barDesign()
        googleMapsview.delegate = self
        locationManager.requestWhenInUseAuthorization()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        
        markNearArea()
        
    }
    func markNearArea(){
        for index in 1...(geosearch?.count)! {
        
        let lat  = geosearch?[index-1].lat
        let long  = geosearch?[index-1].lon
        let coordinate = CLLocationCoordinate2D(latitude: lat! , longitude: long!)
        
        let locationMarker = GMSMarker(position: coordinate)
        locationMarker.map = self.googleMapsview
        locationMarker.title = geosearch?[index-1].title
        locationMarker.appearAnimation = .pop
        locationMarker.icon = UIImage(named: "map_br.png")
        locationMarker.opacity = 1
                                            
                                        }
    }
  
}

我想点击标记并想通过地理搜索[位置]

extension MapsViewController: GMSMapViewDelegate {

    func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool
    {

        
        let url = "https://abk.com/?loc=\(String(describing: geosearch![marker.].pageid!))"
        if let url = URL(string: url ), UIApplication.shared.canOpenURL(url) {
           if #available(iOS 10.0, *) {
              UIApplication.shared.open(url, options: [:], completionHandler: nil)
           } else {
              UIApplication.shared.openURL(url)
           }
        }
        
        return true
    }

}

标签: iosswiftgoogle-maps

解决方案


您可以通过此获得标记位置

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
    let position = marker.position
        
    return true
}

或者,如果您想要其他数据,请userData使用GMSMarker. 像这样

首先将数据分配给标记:

locationMarker.userData = //Assign your any type of data

在代表内部

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
    let position = marker.position
        
    let markerData = marker.userData // Your marker data
    
    return true
}


推荐阅读