Клуб API Карт

Yandex api 2 + wms тайлов

Пост в архиве.
scharik911
25 октября 2012, 12:35

Здравствуйте. Появилась необходимость подкючить новый слой с тайлами, отдаваемыми сервером WMS.

Установка, настройка и добавление нового слоя не оказались сложными, но первая проблема появилась с расчетом тайлов. Яндекс использует: x, y, z. WMS использует: a, b, c, d - (BBOX).

 

Пример формулы пересчета я нашел на страничке zuluserver, там тайлы отдавал zuluserver, а использовал яндекс api 1. Переписать данную функцию на api2 я так и не смог.

 

ниже привожу данную функцию и прошу помочь переписать ее под 2 api:

 

 

 

 

CustomGetTileUrl=function (tile, zoom){

    if (this.myMercZoomLevel == undefined) {
        this.myMercZoomLevel = MERC_ZOOM_DEFAULT;
    }

    if (this.myFormat == undefined) {
        this.myFormat = FORMAT_DEFAULT;
    }
    if (typeof(window['this.myStyles']) == "undefined") this.myStyles = "";

    var tilePixel = new YMaps.Point(tile.x, tile.y);
    var offsetLeftBottom = new YMaps.Point(0, 256);
    var offsetRightTop = new YMaps.Point(256, 0);

    var leftBottomPixel = map.tileCoordinates.toPixels(tilePixel, offsetLeftBottom, zoom);
    var rightTopPixel = map.tileCoordinates.toPixels(tilePixel, offsetRightTop, zoom);

    var minXminYWMSGeoPoint = map.coordSystem.toCoordPoint(leftBottomPixel);
    var maxXmaxYWMSGeoPoint = map.coordSystem.toCoordPoint(rightTopPixel);

    var lSRS = "EPSG:4326";
    var lBbox = minXminYWMSGeoPoint.getLng() + "," + minXminYWMSGeoPoint.getLat() + "," +
                maxXmaxYWMSGeoPoint.getLng() + "," + maxXmaxYWMSGeoPoint.getLat();
    var lURL = currentBaseURL;
    lURL += "REQUEST=GetMap";
    lURL += "&SERVICE=WMS";
    lURL += "&VERSION=1.1.1";
    lURL += "&LAYERS=" + currentLayers;
    lURL += "&STYLES=" + this.myStyles;
    lURL += "&FORMAT=" + this.myFormat;
    lURL += "&BGCOLOR=0xFFFFFF";
    lURL += "&TRANSPARENT=TRUE";
    lURL += "&SRS=" + lSRS;
    lURL += "&BBOX=" + lBbox;
    lURL += "&WIDTH=256";
    lURL += "&HEIGHT=256";
    lURL += "&reaspect=false";
    return lURL;