Lisää

Bing Maps Quadkeys -sovellusten käyttäminen Openlayers 3 Tile -lähteenä

Bing Maps Quadkeys -sovellusten käyttäminen Openlayers 3 Tile -lähteenä


Minulla on useita laatalähteitä, jotka käyttävät Bing Mapsin Quadkey-järjestelmää vanhassa Silverlight-sovelluksessa, ja haluaisin käyttää niitä uudessa Openlayers 3 -kartassa.

Olen löytänyt useita esimerkkejä toiminnoista, jotka muuttavat nämä lähteet Leaflet.js: lle, mutta OL3: n syntaksi on hieman erilainen ja API-asiakirjojen lukeminen osoittaa, että on ol.Tile.coord-luokka, mutta jos ymmärrän oikein, tämä on kokeellinen ominaisuus ja saattaa edellyttää mukautettua rakennusta lähdekoodista.

Voiko kukaan antaa esimerkin tällaisesta muunnoksesta vai tietääkö kukaan, tukeeko OL3: n uusin (3.8.2) versio quadkey-menetelmää?

Tämä on esimerkki esitteestä:

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: funktio (x, y, z) {var quadKey = []; for (var i = z; i> 0; i- -) {var digit = '0'; var mas = 1 << (i - 1); if ((x & mask)! = 0) {digit ++;} if ((y & mask)! = 0) {numero ++ ; digit ++;} quadKey.push (digit);} return quadKey.join (");}});

Ja tämä on nykyinen Silverlight-koodi:

julkinen ohitus Uri GetUri (int x, int y, int zoomLevel, bool getPrintLink) {Uri uri = null; if (this.Covers (x, y, zoomLevel)) {QuadKey qk = uusi QuadKey (x, y, zoomLevel); if (getPrintLink) {uri = uusi Uri (this.CurrentHostURL + "/ laatat / NL /" + zoomLevel.ToString () + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute); } else {uri = new Uri ("http://tileserver.satmap.com/NL/" + zoomLevel.ToString () + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute); }} paluu uri; }

Esitin kysymyksen hieman eri tavalla toisessa viestissä ja kysymykseeni vastattiin täysin, vaikka en edelleenkään pääse kyseiseen URL-osoitteeseen. Kaikille muille, joiden on ehkä tiedettävä, lähetän linkin tähän ja merkin tämän kysymyksen vastaukseksi.

Tämän lisäksi vastauksen koodi on alla:

// quadkey-toiminto var quadkey = function (x, y, z) {var quadKey = []; for (var i = z; i> 0; i--) {var digit = '0'; var mas = 1 << (i - 1); if ((x & mask)! = 0) {numero ++; } if ((y & naamio)! = 0) {numero ++; numero ++; } quadKey.push (numero); } 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; palauta "//esimerkki.com/r" + neliöavain (x, y, z);}})});

Bing Maps on jo saatavilla Open Layers 3: ssa. Katso tätä esimerkkiä: http://openlayers.org/en/master/examples/bing-maps.html

Löydät Bing Maps -luokan lähdekoodin Open Layers 3: sta täältä: https://github.com/openlayers/ol3/blob/master/src/ol/source/bingmapssource.js