Mapbox Hatası: Stil yüklenmedi


13

Suncalc sonuçlarına ve geojson kullanarak bir mapbox haritası üzerinde çizmeye çalışıyorum. Önce çizmeye çalıştığım her satıra bir tane olmak üzere 2 fonksiyon oluşturmaya çalıştım. Ama bunu yaptığımda, sadece son çağrılan fonksiyonu gösterecekti. Bu nedenle, mapbox ve broşür sözdiziminde yeni olduğum için katmanları nasıl yöneteceğimi bilmediğim sonucuna vardım.

Broşür örneklerini kullanarak bu koda ulaştım:

JAVASCRIPT

    function drawOnMap(sAz){
        //sun calculation stuff, doesn't matter for the problem
        var lt = parseFloat(document.getElementById('lat').value);
        var ln = parseFloat(document.getElementById('long').value);   

        var R = 6371000; //Earth's radius
        var d = 10000* Math.sin(1); // Distance
        var brngSR = deg2rad(sAz);

        var ltr = deg2rad(lt);    

        var latSR = rad2deg(Math.asin( Math.sin(ltr)*Math.cos(d/R) + Math.cos(ltr)*Math.sin(d/R)*Math.cos(brngSR) ));
        var lonSR = ln + rad2deg(Math.atan2(Math.sin(brngSR)*Math.sin(d/R)*Math.cos(ltr), Math.cos(d/R)-Math.sin(ltr)*Math.sin(latSR)));


        var out3 = calculateNOAA(lat, lon, timeZone, year, month, day, out[6], out[7], out[8]);
        var sEl2 = out3[11];
        var sAz2 = out3[9];

        var brngSS = deg2rad(sAz2);   

        var latSS = rad2deg(Math.asin( Math.sin(ltr)*Math.cos(d/R) + Math.cos(ltr)*Math.sin(d/R)*Math.cos(brngSS) ));
        var lonSS = ln + rad2deg(Math.atan2(Math.sin(brngSS)*Math.sin(d/R)*Math.cos(ltr), Math.cos(d/R)-Math.sin(ltr)*Math.sin(latSS)));

        //GeoJSON to display 2 lines 
        var sunPos = [
            {
                "type": "Feature",
                "geometry": {
                    "type": "LineString",
                    "coordinates": [
                        [ln, lt], 
                        [lonSR, latSR]
                    ]
                },
                "properties": {"id": "sunrise"}
            },
            {
                "type": "Feature",
                "geometry": {
                    "type": "LineString",
                    "coordinates": [
                        [ln, lt],
                        [lonSS, latSS]
                    ]
                },
                "properties": {"id": "sunset"}
            }
        ];

        //setting map to current position
        mapboxgl.accessToken = 'pk.<mytoken>'; //I'm using a real token
        var map = new mapboxgl.Map({
            container: 'map',
            style: 'mapbox://styles/mapbox/streets-v9',
            center: [ln, lt],
            zoom: 15
        });    
        var marker = L.icon({
            iconUrl: 'actpin.png',
            iconAnchor: [20, 50]
        });

        L.marker([ln, lt], {icon: marker}).addTo(map);
        //adding the layer to map with different colors each line
        map.on('load', function () {
            L.geoJson(sunPos, {
                style: function(feature) {
                    switch (feature.properties.id) {
                        case 'sunrise': return {color: "#FFFF33"};
                        case 'sunset':   return {color: "#FF9933"};
                    }
                }
            }).addTo(map);
        });
    }

İşlev çağrıldığında, aşağıdaki hatayı alıyorum:

Hata: Stil yüklenmedi

"katı kullanın"; işlev Stili (e, t, r) {this.animationLoop = t || yeni AnimationLoop, this.dispatcher = yeni Dispatcher (r || 1, this), this.spriteAtlas = yeni SpriteAtlas (512,512), this.lineAtlas = yeni LineAtlas (256,512), this._layers = {}, this._order = [], this._groups = [], this.sources = {}, this.zoomHistory = {}, util.bindAll ([ "_forwardSourceEvent", "_ forwardTileEvent", "_ forwardLayerEvent", "_ redoPlacement"], bu), this._resetUpdates (); var s = işlev (e, t) {eğer (e) bu boşluğu döndürür ("hata", {hata: e}); if (! validateStyle.emitErrors (this, validateStyle (t))) {this._loaded =! 0, this.stylesheet = t, this.updateClasses (); var r = t.sources; için (r in var) this.addSource (s, r [s]); t.sprite && (this.sprite = yeni ImageSprite (t.sprite), this.sprite.on ("yükleme", this.fire.bind ( this, "change"))), this.glyphSource = yeni GlyphSource (t.glifler), this._resolve (), this.fire ("load")}}. bind (this); "string" == typeof e? ajax.getJSON (normalizeURL (e), s): tarayıcı.frame (s) .bind (this, null, e)), this.on ("kaynak.yükleme", işlev (e) {var t = e.source; if (t && t.vectorLayerIds) için (this._layers içinde var) {var s = this._layers [r]; s.source === t.id && this._validateLayer (s)}})} var Evented = zorunlu ("../ util / evented"), StyleLayer = requir ("./ style_layer "), ImageSprite = gerektirir (" ./ image_sprite "), GlyphSource = (gerektiren" ../ simge / glyph_source "), SpriteAtlas = gerektirir (" ../ sembol / sprite_atlas "), LineAtlas = (gerektiren" ../ / line_atlas işlemek "= gerektirir util) (" ../ util / util "), ajax = gerektirir (" ../ util / ajax "), normalizeURL gerektirir = (" ../ util / mapbox "). normalizeStyleURL, tarayıcı = ( "../ util / tarayıcı") gerektirirDispatcher = gerektiren ( "../ util / memuru "), AnimationLoop = (" ./ animation_loop ") gerektirir, validateStyle (" ./ validate_style ") gerektiren = Kaynak = (" ../ kaynak / kaynak") gerektirir, ! styleSpec = ( "./ style_spec "), StyleFunction = (" ./ style_function") gerektirir gerektiren; module.exports = Stil, Style.prototype = util.inherit (Evented {_ yüklendi: 1, _validateLayer: fonksiyonu (e) {var t = this.sources [e.source]; e.sourceLayer && t && t.vectorLayerIds && - 1 === t.vectorLayerIds.indexOf (e.sourceLayer) && this.fire ("hata", {hata: yeni Hata ('Kaynak katmanı "'+ e.sourceLayer +'", "'+ e.id +'" ')})} stil katmanında belirtildiği gibi "' + t.id + '" kaynağında mevcut değil: function () {if (! this ._loaded) döndür!!loaded ()) return! 1; return! this.sprite || this.sprite.loaded ()}, _ resol: function () {var e, t; this._layers = {}, this._order = this.stylesheet. layers.map (işlev (e) {dönüş e.id}); (var r = 0; rMath.floor (e) && (t.lastIntegerZoom = Math.floor (e + 1), t.lastIntegerZoomTime = Tarih. Şimdi ()), t.lastZoom = e},_checkLoaded: function () {if (! this._loaded) yeni bir Hata atın ("Stil yüklenmiyor")} , update: function (e, t) {if (! this._updates.changed) bunu döndürür; this._updates.allLayers) this._groupLayers (), this._updateWorkerLayers (); else {var r = Object.keys (this._updates.layers); r.length && this._updateWorkerLayers (r)} var s, i = Nesne. tuşları (this._updates.sources); (var s = this._order [r], i = 0; i için (s = 0; s = 0; r -)

Hatayı tespit edebilirim (blockquote içinde vurgulanır), ancak nasıl düzeltileceğim hakkında hiçbir fikrim yok ... Düzeltme girişimim kullanıyordu map.on('load', function()), ama yine de aynı hatayı alıyorum.

Düşüncesi olan var mı?


GIS SE'ye Hoşgeldiniz! Yeni bir kullanıcı olarak , odaklanmış Soru-Cevap formatımız hakkında bilgi edinmek için Tura katıldığınızdan emin olun .
PolyGeo

Yanıtlar:


13

L.marker([ln, lt], {icon: marker}).addTo(map);Çizgiyi alın ve için geri arama işlevine taşıyın map.on('load')( L.geoJsonnesneyi eklediğiniz yerde doğrudan bir satır ). Bu, stil başlatılmadan önce kodun haritaya işaretçiyi eklemeye çalışmasını önleyecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.