2016-08-01 10 views
-1

Es ist möglich, einen Tile-Layer aus einer TileImage-Quelle mit Kacheln in seiner höchsten Auflösung (Zoom) zu laden und diese Kacheln anzuzeigen alle Zoomstufen. Ich habe hochauflösende Bilder, die ich als Ebene über einer anderen Kachelebene wie Bing oder OSM anzeigen möchte.openlayers 3 - TileLayer mit den höchsten Zoomstufen laden, aber in allen Zoomstufen anzeigen

Beispiel Quelle

var source = new ol.source.TileImage({ 
projection: 'EPSG:900913', 
tileGrid: new ol.tilegrid.TileGrid({ 
projection: 'EPSG:900913', 
extent: projectionExtent, 
//extent: ol.proj.transformExtent([-83.7893967, 42.851353, -83.7855987, 42.849371], "EPSG:4326", "EPSG:900913"), 
resolutions: resolutions, 
tileSize:[pictometryImageSize, pictometryImageSize] 
}), 
tileUrlFunction: function(tileCoord, pixelRatio, projection){ 
var zoom = tileCoord[0]; 

console.log(zoom) 

if(zoom == 21){ 
    var tileGrid = this.getTileGrid(); 
    var center = ol.proj.transform(ol.extent.getCenter(tileGrid.getTileCoordExtent(tileCoord)),"EPSG:900913", "EPSG:4326"); 
    return 'www.myrealtileurl; 
} 
//return undefined; 
//return 'https://dummy.com'; 
}, 
minZoom: 0, 
maxZoom: 21 

});

Antwort

1

Ich hoffe, ich verstehe Sie richtig. Zunächst können Sie den Layer-Extent mit extent einschränken. Zweitens können Sie den Zoom mit den Eigenschaften maxZoom und minZoom sperren. OpenLayers wird seine Größe selbst bestimmen. Hier ist ein Beispiel, in dem ArcGIS-Kachelebene in Extent und Zoom gesperrt ist:

var map = new ol.Map({ 
    target: 'map', 
    layers: [ 
    new ol.layer.Tile({ source: new ol.source.OSM() }), 
    new ol.layer.Tile({ 
     extent: ol.proj.transformExtent([-110, 42, -100, 48], "EPSG:4326", "EPSG:3857"), 
     source: new ol.source.XYZ({ 
      maxZoom: 6, 
      minZoom: 6, 
      url: 'http://server.arcgisonline.com/ArcGIS/rest/services/' + 
      'World_Topo_Map/MapServer/tile/{z}/{y}/{x}' 
     }) 
    }) 
    ], 
    view: new ol.View({ 
     center: ol.proj.fromLonLat([-105.89, 45.09]), 
     zoom: 6 
    }) 
}); 
+0

Ich sehe dieses Verhalten, wenn ich eine XYZ-Quelle mit der angegebenen URL verwende. Wenn ich dasselbe mit einer TileImage-Quelle versuche, benutze die tileUrlFunction, verschwinden die Kacheln für Zoom 21, wenn ich auf 20 zoome. Ich nehme an, dass dies daran liegt, dass die Funktion für alle Zoomlevels aufgerufen wird 21. –

+0

Kann 'ol.source.XYZ' gut für dich sein? Es erweitert TileImage und hat alle Funktionen einschließlich tileUrlFunction. –

+0

Versuchte das, kein Unterschied. Mir ist aufgefallen, dass wenn ich eine schlechte URL anstelle von undefiniert zurückgebe, die Kacheln für 1 Zoomstufe zurückgehalten werden, bevor sie verschwinden. Wenn ich den auskommentierten Extent verwende, wird die tileUrlFunction nicht mehr bei zoom = 19 aufgerufen. –