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