我在GoogleMap上有大约4000个标记,而我没有使用群集。因此,目前我在地图上显示/隐藏标记的操作如下所示。
marker.map = nil
marker.map = mapView
在某些情况下,我需要过滤掉一些标记并使其可见,否则应隐藏它们。所以我可以通过代码来实现它,但需要花费时间。
markers.forEach { (marker) in
if !arrDeviceID.contains(marker.deviceID ?? "") {
marker.map = nil
} else {
marker.map = self.googleMapView
}
}
在Android中,有一个属性Visibility
正在完美且快速地运行。但是在iOS中没有这样的属性。
那么我该怎么做才能提高性能。
答案 0 :(得分:1)
实施将如下所示:
var markers: [Int: GMSMarker] = [:]
func addMarker(with identifier: Int) {
let marker = GMSMarker(position: someCoordinates)
markers[identifier] = marker
}
func removeMarker(with identifier: Int) {
markers[identifier]?.map = nil
}
答案 1 :(得分:1)
让我们说这是你的标记数组
var markers = [GMSMarker]()
准备标记字典,假设您的设备ID在Int
中func prepareMarkersDict(markers:[GMSMarker]) -> [Int:GMSMarker]{
var markerDict = [Int:GMSMarker]()
for marker in markers{
markerDict[marker. deviceID] = marker
}
return markerDict
}
您要隐藏的设备ID数组
var arrDeviceIDToHide = [Int]()
现在迭代它并隐藏标记
let markerDict = prepareMarkersDict(markers:markers)
for deviceId in arrDeviceIDToHide{
let marker = markerDict[deviceId]
marker?.map = nil
}