У меня есть несколько источников тайлов, которые используют систему Quadkey Bing Maps в старом приложении Silverlight, и я хотел бы использовать их в новой карте Openlayers 3.
Я нашел несколько примеров функций, которые будут преобразовывать эти источники в Leaflet.js, но синтаксис несколько отличается для OL3, и чтение документации по API указывает на то, что существует класс ol.Tile.coord, но, если я правильно понимаю, это экспериментальный функция и может потребоваться пользовательская сборка из исходного кода.
На страницах GitHub есть ссылка на такую функциональность, но я не знаю, нужно ли мне компилировать сборку с этим источником: https://github.com/openlayers/ol3/blob/5c5364bbb7e8df76f18242ad665c87ca08a76e76/src/ol/source/bingmapssource.js
Может ли кто-нибудь привести пример такого преобразования или кто-нибудь знает, поддерживает ли последняя (3.8.2) версия OL3 метод quadkey?
Это пример листовки:
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('');
}
});
А это существующий код Silverlight:
public override 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 + "/tiles/NL/" + zoomLevel.ToString() + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute);
}
else
{
uri = new Uri("http://tileserver.satmap.com/NL/" + zoomLevel.ToString() + "/" + qk.Key + ".ipic", UriKind.RelativeOrAbsolute);
}
}
return uri;
}
Буду признателен за любое понимание, поскольку я просмотрел множество форумов и бесчисленное количество страниц результатов поиска, но не нашел решения.
EPSG:3857
(по умолчанию) и размер плитки по умолчанию, вероятно, должны быть единственными дополнительными требованиями. - person Alvin Lindstam   schedule 16.09.2015