Ich versuche, eine Map mit leaflet.js zu erstellen, wo es möglich ist, zwischen verschiedenen Kachel-Layern zu wechseln. Es funktioniert hervorragend mit Tileservers, die die Kacheln mit dem Standardschema x, y und z (oom) bedienen. Microsoft Bing verwendet jedoch ein eigenes Quadkey-Schema. Ich habe eine JavaScript-Funktion gefunden, um xyz in Quad umzuwandeln, aber ich weiß nicht, wie ich es benutzen soll. Bitte beachten Sie meinem Beispiel:Verwenden Sie Bing Quadkey-Kacheln anstelle von x/y/z-Kacheln in leafletjs map
function toQuad(x, y, z) {
var quadkey = '';
for (var i = z; i >= 0; --i) {
var bitmask = 1 << i;
var digit = 0;
if ((x & bitmask) !== 0) {
digit |= 1;}
if ((y & bitmask) !== 0) {
digit |= 2;}
quadkey += digit;
}
return quadkey;
};
var openstreetmap = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',{attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'}),
arcgissat = L.tileLayer('http://{s}.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {subdomains: ['server', 'services'], attribution: '© <a href="http://www.arcgis.com/">ArcGIS esri</a>'})
// bingsat = L.tileLayer('http://t{s}.tiles.virtualearth.net/tiles/a'+toQuad({x},{y},{z})+'.jpeg?g=1398', {subdomains: [0,1,2,3,4,5], attribution: '© <a href="http://bing.com/maps">Bing Maps</a>'}),
var map = L.map('map', {
center: [48.85,2.33],
zoom: 10,
layers: [openstreetmap]
});
var baseLayers = {
"OpenStreetMap": openstreetmap,
// "Bing Sat": bingsat,
"ArcGIS esri Sat": arcgissat
};
L.control.layers(baseLayers, null, {collapsed: false}).addTo(map);
Grundsätzlich ich weiß nur nicht, wie die JavaScript-Funktion aufrufen, innerhalb der Deklaration von Variablen mit der {x}, {y} und {z} Werte, die leafletjs zur Verfügung stellt.
funktioniert perfekt, vielen Dank! – user168080