При использовании MapboxStati c api наложения маркеров должны быть png, jpg или webp - PullRequest
0 голосов
/ 13 января 2020

Вот как я создаю маркеры и добавляю их в массив оверлеев:

let text = "1"
let url = URL(string: "http://texttopng.azurewebsites.net/Home/TextToPng?text=\(text)")!
let marker = CustomMarker(coordinate: label.location.coordinate, url: url)

, но когда я пытаюсь сделать снимок:

_ = Snapshot(options: options, accessToken: nil).image { image, error in
    //error: Error Domain=MBStaticErrorDomain Code=-1 "Marker overlays must be png, jpg, or webp" UserInfo={NSLocalizedFailureReason=Marker overlays must be png, jpg, or webp}
}

Почему это происходит так?

Вот что я пробовал:

let image = UIImage(named: "icon-card")!
let png = UIImagePNGRepresentation(image)!
let newurl = png.write(withName: "\(text).png")
let marker = CustomMarker(coordinate: label.location.coordinate, url: newurl)

extension Data {
func write(withName name: String) -> URL {

    let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(name)

    try! write(to: url, options: .atomicWrite)

    return url
}
}

enter image description here

1 Ответ

1 голос
/ 14 января 2020

Я хотел бы поделиться своим кодом, и он работает без проблем:

let text = "Hello"
let urlWithText = URL(string: "http://texttopng.azurewebsites.net/Home/TextToPng?text=\(text)")!
let marker = CustomMarker(coordinate: CLLocationCoordinate2D(latitude: 53.705912, longitude: 23.840836), url: urlWithText)

let camera = SnapshotCamera(
    lookingAtCenter: CLLocationCoordinate2D(latitude: 53.705912, longitude: 23.840836),
    zoomLevel: 12)
let options = SnapshotOptions(
    styleURL: URL(string: "mapbox://styles/mapbox/satellite-streets-v9")!,
    camera: camera,
    size: CGSize(width: 400, height: 200))
options.overlays = [marker]

_ = Snapshot(options: options, accessToken: nil).image { image, error in
    _ = image?.jpegData(compressionQuality: 1.0)?.write(withName: "my_snapshot.jpg")
}

Я использовал ваш extension для Data для сохранения jpg файла

extension Data {
    func write(withName name: String) -> URL {
        let url = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(name)
        print(url.path)
        try! write(to: url, options: .atomicWrite)
        return url
    }
}

и в результате у меня есть такой шейпшот: enter image description here Полагаю, вы можете попробовать использовать мой код или его часть и проверить свою среду. Я использую MapboxStatic.swift (0.11.0) Mapbox pod

...