【flutter】ios整合高德地图(遇到的问题)

101 阅读1分钟

一、地图

1、展示地图

	let frame: CGRect
    let viewId: Int64
    let mapView: MAMapView
    

    init(_ frame: CGRect, viewId: Int64, args: Any?) {
        self.frame = frame
        self.viewId = viewId
        AMapServices.shared().enableHTTPS = true
        mapView = MAMapView(frame: self.frame)
        
        super.init()
   
    }

    func view() -> UIView {
        self.mapView
    }

2、标注,监听点击地图事件

启动点击地图标注监听

   func setOnMapClickListener(params: NSDictionary) {
   		///接受参数
       let str = params.value(forKey: "isOnMapClickListener")
       //let num = params.value(forKey: "onMapClickListenerNum") as? Int
       if (str != nil) {
           if (str as! Bool) {
           ///启动监听
            let gestureSingleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap))
            ///监听点击一次
            gestureSingleTap.numberOfTapsRequired = 1
            ///注册
            mapView.addGestureRecognizer(gestureSingleTap)
           }

       }

   }

接受点击的参数


 @objc func handleTap(sender: UITapGestureRecognizer) {
        
        if sender.state == .ended {
            
        }
        let touchPoint:CGPoint = sender.location(in: self.mapView)
        ///转换成坐标
        let touchMapCoordinate:CLLocationCoordinate2D=mapView.convert(touchPoint, toCoordinateFrom: mapView)
        print(touchMapCoordinate.latitude);
        print(touchMapCoordinate.longitude);
    }