Viac

Používanie Bing Maps Quadkeys ako zdroja Openlayers 3 Tile

Používanie Bing Maps Quadkeys ako zdroja Openlayers 3 Tile


Mám niekoľko zdrojov dlaždíc, ktoré využívajú systém Quadkey od Bing Maps v starej aplikácii Silverlight a rád by som ich použil v novej mape Openlayers 3.

Našiel som niekoľko príkladov funkcií, ktoré prevedú tieto zdroje pre Leaflet.js, ale syntax je pre OL3 trochu iná a čítanie prostredníctvom dokumentov API naznačuje, že existuje trieda ol.Tile.coord, ale ak tomu dobre rozumiem, ide o experiment a môže vyžadovať vlastné zostavenie zo zdrojového kódu.

Môže niekto uviesť príklad tohto typu konverzie alebo skutočne niekto vie, či najnovšia (3.8.2) verzia OL3 podporuje metódu quadkey?

Toto je príklad letáku:

var BingLayer = L.TileLayer.extend ({getTileUrl: function (tilePoint) {this._adjustTilePoint (tilePoint); return L.Util.template (this._url, {s: this._getSubdomain (tilePoint), q: this._quadKey (tilePoint.x, tilePoint.y, this._getZoomForUrl ())});}, _quadKey: function (x, y, z) {var quadKey = []; for (var i = z; i> 0; i- -) {var digit = '0'; var mask = 1 << (i - 1); if ((x & mask)! = 0) {digit ++;} if ((y & mask)! = 0) {digit ++ ; digit ++;} quadKey.push (digit);} return quadKey.join (");}});

A toto je súčasný kód Silverlight:

verejné prepísanie Uri GetUri (int x, int y, int zoomLevel, bool getPrintLink) {Uri uri = null; if (this.Covers (x, y, zoomLevel)) {QuadKey qk = new QuadKey (x, y, zoomLevel); if (getPrintLink) {uri = new Uri (this.CurrentHostURL + "/ dlaždice / NL /" + zoomLevel.ToString () + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute); } else {uri = new Uri ("http://tileserver.satmap.com/NL/" + zoomLevel.ToString () + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute); }} vrátiť uri; }

V inom príspevku som otázku položil trochu inak a na moju otázku bolo úplne zodpovedané, aj keď stále nemôžem získať prístup k príslušnej adrese URL. Pre kohokoľvek iného, ​​kto môže potrebovať vedieť, uverejňujem odkaz tu a označujem túto otázku ako zodpovedanú.

Ďalej je uvedený kód v odpovedi nižšie:

// funkcia quadkey var quadkey = function (x, y, z) {var quadKey = []; pre (var i = z; i> 0; i--) {var digit = '0'; var mask = 1 << (i - 1); if ((x & mask)! = 0) {digit ++; } if ((y & mask)! = 0) {digit ++; číslica ++; } quadKey.push (číslica); } return quadKey.join (");}; var quadKeyLayer = new ol.layer.Tile ({source: new ol.source.XYZ ({maxZoom: 19, tileUrlFunction: function (tileCoord, pixelRatio, projection) {var z = tileCoord [0]; var x = tileCoord [1]; var y = -tileCoord [2] - 1; return "//example.com/r" + quadkey (x, y, z);}})});

Mapy Bing sú už k dispozícii v otvorených vrstvách 3. Pozrite sa na tento príklad: http://openlayers.org/en/master/examples/bing-maps.html

Zdrojový kód pre triedu Bing Maps v Open Layers 3 nájdete tu: https://github.com/openlayers/ol3/blob/master/src/ol/source/bingmapssource.js