我可以繪制超過 8000 個默認紅色標記,而無需為標記設定圖示屬性。但我想根據標記的值繪制不同顏色的標記。在 XCOde 中,我收到以下警告:-
((null)) was false: Reached the max number of texture atlases, can not allocate more.
((null)) was false: Failed to get the icon for the given CGImageRef.
((null)) was false: Failed to allocate texture space for marker
來自 Google Map SDK & 之后大約 1300 個標記它崩潰了。有沒有其他方法可以為標記設定不同的顏色而不會崩潰超過 1300 個標記。
我正在設定標記的顏色,如下所示:-
marker.icon = GMSMarker.markerImage(with: self.getColorsFromString(strColor: strColor))
func getColorsFromString(strColor:String) -> UIColor
{
var color = UIColor()
switch strColor {
case "GREEN":
color = UIColor.green
case "YELLOW":
color = UIColor.yellow
case "RED":
color = UIColor.red
case "ORANGE":
color = UIColor.orange
case "BLUE":
color = UIColor.blue
case "CYAN":
color = UIColor.cyan
case "MAGENTA":
color = UIColor.magenta
default:
color = UIColor.red
print("default color")
}
return color
}
uj5u.com熱心網友回復:
如何使用影像結構?我不需要呼叫 GMSMarker.markerImage() 數千次。
struct MarkerImage {
static let green = GMSMarker.markerImage(with: self.getColorsFromString(strColor: "GREEN"))
static let yellow = GMSMarker.markerImage(with: self.getColorsFromString(strColor: "YELLOW"))
static let red = GMSMarker.markerImage(with: self.getColorsFromString(strColor: "RED"))
}
func getIcon(color: String) -> Image {
switch(color) {
case "GREEN": return MarkerImage.green
case "YELLOW": return MarkerImage.yellow
default: return MarkerImage.red
}
}
marker.icon = getIcon(color)
如果它有效,我們可以創建一個顏色名稱的列舉,并擴展它以回傳一個影像。
uj5u.com熱心網友回復:
感謝winner.ktw這個解決方案 這個解決方案不能直接作業,但我做了一些改變然后它對我有用。由于您的解決方案,我有了一個想法。所以再次感謝!在這里,我分享了我編輯過的win.ktw代碼版本。
struct MarkerImage{
static var shared = MarkerImage()
lazy var green = GMSMarker.markerImage(with: self.getColorsFromString(strColor: "GREEN"))
lazy var yellow = GMSMarker.markerImage(with: self.getColorsFromString(strColor: "YELLOW"))
lazy var red = GMSMarker.markerImage(with: self.getColorsFromString(strColor: "RED"))
func getColorsFromString(strColor:String) -> UIColor {
var color = UIColor()
switch strColor {
case "GREEN":
color = UIColor.green
case "YELLOW":
color = UIColor.yellow
default:
color = UIColor.red
}
return color
}
}
func getIcon(color: String) -> UImage {
switch(color) {
case "GREEN": return MarkerImage.shared.green
case "YELLOW": return MarkerImage.shared.yellow
default: return MarkerImage.shared.red
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/370647.html
