TableViewCell 中的 Google 地图 - Swift

问题描述 投票:0回答:0

TableView 有问题。 其中一个单元格应该包含我在其上显示多段线的 Google 地图。 它在应用程序中看起来很奇怪。好像带有地图的单元格被加载了两次。上面的栏是一个工作地图(显示轨迹,手势工作),而地图的下部是不活动的。我该如何解决这个问题以便地图加载一次?

Screenshot

来自我的 MapCell 的代码

var  mapView : GMSMapView!
 var markers = [GMSMarker]()

 public var map: Map! {
        didSet {

            
            for poi in self.map.pois{
                guard let lat = poi.lat, let lon = poi.lon else{
                    return
                }
                let marker = GMSMarker(position: CLLocationCoordinate2D(latitude: Double(lat)!, longitude: Double(lon)!))
                
                if let title = poi.title {
                    marker.title = title
                }
      
                
                self.markers.append(marker)
                
                
                
            }
            guard let lat = self.map.pois[0].lat, let lon = self.map.pois[0].lon else{
                return
            }
            let camera = GMSCameraPosition.camera(withLatitude: Double(lat)!, longitude: Double(lon)!, zoom: 16.0)
            
              mapView = GMSMapView.map(withFrame: self.bounds, camera: camera)
            
            mapView.settings.scrollGestures = true
            mapView.settings.zoomGestures = true
            
                        self.addSubview(mapView)
            
            
                for marker in self.markers{
                marker.map = mapView
            }
            
            
            guard let gpxUrl = URL(string: self.map.file!) else{
                return
            }
            
            guard let gpx = GPXParser(withURL: gpxUrl)?.parsedData() else { return }
            let path = GMSMutablePath()
            
            guard gpx.tracks[0].segments[0].points != nil   else{
                return
            }
            let  points = gpx.tracks[0].segments[0].points
            
            for trackpoint in points{
               
                path.add(CLLocationCoordinate2D(latitude: trackpoint.latitude!, longitude: trackpoint.longitude!))
                
            }
           
            let polyline = GMSPolyline(path: path)
            polyline.strokeWidth = 5.0
            polyline.strokeColor = .red
            polyline.map = mapView
          

        }
            
        }

swift google-maps uitableview
© www.soinside.com 2019 - 2024. All rights reserved.