Daugiau

Ar galima „openLayers 3“ sujungti kelis URL vienai ol.layer.tile?

Ar galima „openLayers 3“ sujungti kelis URL vienai ol.layer.tile?


Turiu dvi vaizdo paslaugas, kurias norėčiau sujungti į vieną sluoksnį; vienas turi didesnės skiriamosios gebos vaizdus, ​​kurie piešia tik didesniu mastu, o kiti turi mažesnės skiriamosios gebos vaizdus, ​​kurie piešia visais masteliais. Norėčiau juos sujungti taip, kad, kai būsite priartinti, išsamūs vaizdai bus rodomi ant apatinių vaizdų. Aš bandžiau įkelti tokius 2 URL:

var USGSimagery = new ol.layer.Tile ({myattribute: 'USGSimagery', source: new ol.source.TileWMS (({URL: ['http://raster.nationalmap.gov/arcgis/services/Orthoimagery/USGS_EROS_Ortho_SCALE/ „ImageServer / WMSServer“, „http: //basemap.nationalmap.gov/arcgis/services/USGSImageryOnly/MapServer/WmsServer“], parametrai: {'LAYERS': 0}}))}});

Bet kai aš įkeliu sluoksnį į žemėlapį - jis piešia juokingai, pavyzdžiui, pakaitomis, kur rodoma viena paslauga, paskui kita. Taigi tai akivaizdžiai nėra būdas tai padaryti. Ar kas nors žino, ar įmanoma sujungti dvi paslaugas į vieną sluoksnį su vienu piešiniu ant kito?


Naudokite XYZ šaltinį ir „tileUrlFunction“:

// funkcija nustatyti plytelių mastą tam tikrai plytelėms var tileExtent = function (tileCoord, source) {var z = tileCoord [0]; var x = tileCoord [1]; var y = tileCoord [2]; var tileGrid = source.getTileGrid (); var tileGridOrigin = tileGrid.getOrigin (); var tileSizeAtResolution = tileGrid.getTileSize (z) * tileGrid.getResolution (z); return [tileGridOrigin [0] + tileSizeAtResolution * x, tileGridOrigin [1] + tileSizeAtResolution * y, tileGridOrigin [0] + tileSizeAtResolution * (x + 1), tileGridOrigin [1] + tileSizeAtResolution * (y + 1); } var currentSource = new ol.source.XYZ ({tileUrlFunction: function (coordinate, pixelRatio, proj) {var urls ['http://raster.nationalmap.gov/arcgis/services/Orthoimagery/USGS_EROS_Ortho_SCALE/ImageServer/WMSServer' 'http://basemap.nationalmap.gov/arcgis/services/USGSImageryOnly/MapServer/WmsServer']; var res = map.getView (). getResolution (); var tileUrl = "; if (res> YOUR_RESOLUTION_THRESHOLD) {tileUrl = URL [0];} else {tileUrl = urls [1];} var ulatus = tileExtent (koordinuoti, tai); // WMS URL gali būti sukonstruotas neteisingai tokiu būdu, bet aš tingiu ieškoti tikrųjų WMS parametrų . Turėtumėte gauti idėją: tileUrl = tileUrl + '? Width = 256 & height = 256 & bbox =' + išplėtimo [0] + ',' + išplitimo [1] + ',' + išplitimo [2] + ',' + išplėtimo [ 3] + '& Layers = 0'; return tileUrl;}, projekcija: projectProjection}); var currentMapLayer = new ol.layer.Tile ({title: 'Layers', source: currentSource});

Žiūrėti video įrašą: GeoServer. OpenLayers. Apache