Маркер перезагрузки Mapbox при появлении меню - PullRequest
0 голосов
/ 17 февраля 2020

Я новичок в Swift / SwiftUI. На данный момент я использую SwiftUI.

Я хочу отобразить карту с маркером из geo json, эта часть работает.

Но, когда я пытаюсь отобразить свое меню, каждый маркер исчезнет с карты. И если я добавлю «loadGeo Json ()» в «updateUIView ()», мое меню появится, но без анимации.

func loadGeoJson() {
        guard let url = URL(string: "http://mysuper.geojson") else {
            print("Invalid URL")
            return
        }

        guard let data = try? Data(contentsOf: url) else {
            preconditionFailure("Failed to decode GeoJSON file")
        }

        DispatchQueue.main.async {
            try? self.drawShapeCollection(data: data)
        }
    }

    func drawShapeCollection(data: Data) throws {

        let iconVelovClose = UIImage(named: "bicycleClose")
        let iconVelovOpen = UIImage(named: "bicycleOpen")

        guard let style = self.mapView.style else { return }

        style.setImage(iconVelovClose!, forName: "velovIconClose")

        style.setImage(iconVelovOpen!, forName: "velovIconOpen")

        guard let feature = try? MGLShape(data: data, encoding: String.Encoding.utf8.rawValue) as? MGLShapeCollectionFeature else {
            fatalError("Could not cast to specified MGLShapeCollectionFeature")
        }

        let source = MGLShapeSource(identifier: "transit", shape: feature, options: nil)
        style.addSource(source)

        let velovLayerClose = MGLSymbolStyleLayer(identifier: "stationsClose", source: source)

...

        style.addLayer(velovLayerClose)

        let velovLayerOpen = MGLSymbolStyleLayer(identifier: "stationsOpen", source: source)
...
        style.addLayer(velovLayerOpen)

    }

Большое спасибо и извините за мой engli sh

...