Бештар

Истифодаи Quadkeys Bing Maps ҳамчун Openlayers 3 Манбаи сафол

Истифодаи Quadkeys Bing Maps ҳамчун Openlayers 3 Манбаи сафол


Ман як қатор сарчашмаҳои сафолпора дорам, ки аз системаи Bing Maps 'Quadkey дар барномаи кӯҳнаи Silverlight истифода мебаранд ва мехоҳам онҳоро дар харитаи нави Openlayers 3 истифода барам.

Ман якчанд мисолҳои функсияҳоеро ёфтам, ки ин манбаъҳоро барои Leaflet.js табдил медиҳанд, аммо синтаксис барои OL3 то андозае фарқ мекунад ва хондан тавассути ҳуҷҷатҳои API нишон медиҳад, ки синфи ol.Tile.coord ҳаст, аммо агар ман дуруст фаҳмидам, ин таҷрибавӣ аст хусусият ва метавонад сохтори фармоишӣ аз коди сарчашма талаб кунад.

Оё касе метавонад намунаи ин намуди табдилро пешниҳод кунад ё дар ҳақиқат касе медонад, ки оё версияи охирини (3.8.2) OL3 усули quadkey -ро дастгирӣ мекунад?

Ин мисоли Leaflet аст:

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 = []; барои (var i = z; i> 0; i- -) {var digit = '0'; var mask = 1 << (i - 1); if ((x & mask)! = 0) {digit ++;} if ((y & mask)! = 0) {digit ++ ; рақам ++;} quadKey.push (рақам);} бозгаштан quadKey.join (");}});

Ва ин рамзи мавҷудаи Silverlight аст:

public overriide Uri GetUri (int x, int y, int zoomLevel, bool getPrintLink) {Uri uri = null; агар (this.Cover (x, y, zoomLevel)) {QuadKey qk = QuadKey нав (x, y, zoomLevel); if (getPrintLink) {uri = Uri нав (this.CurrentHostURL + "/ tile / NL /" + zoomLevel.ToString () + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute); } else {uri = Uri нав ("http://tileserver.satmap.com/NL/" + zoomLevel.ToString () + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute); }} бозгаштан uri; }

Ман дар як навиштаи дигар саволро каме дигар хел пурсидам ва ба саволи ман пурра посух дода шуд, гарчанде ки ман то ҳол url-и саволро дастрас карда наметавонам. Барои ҳар каси дигаре, ки шояд лозим ояд, бидонад, ки ман истинодро инҷо мегузорам ва ин саволро ҳамчун ҷавоб қайд мекунам.

Илова бар ин, рамзи ҷавоб дар зер аст:

// функсияи quadkey var quadkey = function (x, y, z) {var quadKey = []; барои (var i = z; i> 0; i--) {var digit = '0'; var mask = 1 << (i - 1); агар ((x & mask)! = 0) {рақам ++; } агар ((y & mask)! = 0) {рақам ++; рақам ++; } quadKey.push (рақам); } return quadKey.join (");}; var quadKeyLayer = ol.layer.Tile нав ({сарчашма: 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);}})});

Харитаҳои Bing аллакай дар қабатҳои кушод дастрасанд. Ба ин мисол назар кунед: http://openlayers.org/en/master/examples/bing-maps.html

Шумо метавонед коди сарчашмаҳои синфи Bing Maps -ро дар Layers Open 3 дар инҷо пайдо кунед: https://github.com/openlayers/ol3/blob/master/src/ol/source/bingmapssource.js


Видеоро тамошо кунед: QGIS Part 3. Openlayer pluginGoogle Maps, Bing Maps