Как листовка загружает карты листов для пользовательских правил? - PullRequest
0 голосов
/ 23 марта 2019

Теперь есть локальная карта пользовательских правил тайлов.Уже есть специальная библиотека JavaScript, которую можно вызывать обычным образомТеперь мне нужно заменить эту библиотеку листовкой.Как использовать алгоритм в старой библиотеке JavaScript и буклете для создания карты тайлов Обычный вызов?

Правило проекции карты тайлов - проекция Меркатора.Размер плитки нерегулярный.Ширина составляет 256 пикселей.Высота одинакова в каждой строке, но разные высоты линий различны.Старая библиотека JavaScript определяет параметры эллипсоида.Различные уровни масштаба, правила вычисления чисел ранга и т. Д. Теперь хотят использовать листовку для загрузки этих карт листов, как использовать старую комбинацию правил и листовок?

MapBase определяет различные базовые параметры, ключ loadMapImageфункция

function LoadMapImage() {
    var tileLoadInfo = mapBase.getViewInfo();
    MapInfo.Map.basemapslicedlayer.empty();
    for (var i = 0; i < tileLoadInfo.TileInfo.length; i++) {
        if (MapInfo.Map.Tiles[tileLoadInfo.TileInfo[i].Col + "_" + tileLoadInfo.TileInfo[i].Row + "_" + tileLoadInfo.Mode] == undefined) {
            if (tileLoadInfo.Mode == 6) {
                var src = DNCOptions.url + "&" + DNCOptions.paramX + "=" + tileLoadInfo.TileInfo[i].Row + "&" + DNCOptions.paramY + "=" + tileLoadInfo.TileInfo[i].Col + "&" + DNCOptions.paramZ + "=" + tileLoadInfo.TileInfo[i].Level + "&SessionID=" + WinfoDNCSessionID
            } else if (tileLoadInfo.Mode == 8 || tileLoadInfo.Mode == 9) {
                var level = tileLoadInfo.Level + 2;
                if (tileLoadInfo.Mode == 9) {
                    level = tileLoadInfo.Level - 3
                }
                src = MapInfo.ServicePath + "?REQUEST=GetMap&SERVICE=CacheMap&Y=" + tileLoadInfo.TileInfo[i].Col + "&X=" + tileLoadInfo.TileInfo[i].Row + "&LEVEL=" + level + "&LAYERS=" + DNCOptions.layername + "&SessionID=" + WinfoDNCSessionID
            } else {
                var src = MapInfo.ServicePath + "?REQUEST=GetMap&SERVICE=WINFODNC&X=" + tileLoadInfo.TileInfo[i].Col + "&Y=" + tileLoadInfo.TileInfo[i].Row + "&LEVEL=" + tileLoadInfo.Level + "&LAYERS=" + tileLoadInfo.Mode + "&SessionID=" + WinfoDNCSessionID
            }
            MapInfo.Map.Tiles[tileLoadInfo.TileInfo[i].Col + "_" + tileLoadInfo.TileInfo[i].Row + "_" + tileLoadInfo.Mode] = w$("<img>").css({
                position: "absolute",
                left: tileLoadInfo.TileInfo[i].Offset_x,
                top: tileLoadInfo.TileInfo[i].Offset_y
            }).attr("src", src)
        }
        MapInfo.Map.basemapslicedlayer.append(MapInfo.Map.Tiles[tileLoadInfo.TileInfo[i].Col + "_" + tileLoadInfo.TileInfo[i].Row + "_" + tileLoadInfo.Mode].css({
            position: "absolute",
            left: tileLoadInfo.TileInfo[i].Offset_x,
            top: tileLoadInfo.TileInfo[i].Offset_y
        }))
    }
}
    function GetTileInfoByViewportParam(vp) {
        var Box = {};
        var i, row1, row2, col1, col2, hTileSize;
        var L, R, T, B;
        var LT = ScreenPoint2Coordinate(vp, 0, 0);
        Box.Top = LT[0];
        Box.Left = LT[1];
        var RB = ScreenPoint2Coordinate(vp, vp.Width, vp.Height);
        Box.Bottom = RB[0];
        Box.Right = RB[1];
        var rc = CalculateTile(LevelZeroTileSizeDegrees, Box, vp.Level);
        row1 = rc[0];
        row2 = rc[2];
        col1 = rc[1];
        col2 = rc[3];
        var LRTB = CalculateTileExtend(LevelZeroTileSizeDegrees, vp.Level, row1, col1);
        L = LRTB[0];
        R = LRTB[1];
        T = LRTB[2];
        B = LRTB[3];
        var Offset = Coordinate2ScreenPoint(vp, T, L);
        vp.Offset_x = Offset[0];
        vp.Offset_y = Offset[1];
        MapViewInfo.Level = vp.Level;
        MapViewInfo.Box = Box;
        i = 0;
        var offsety = vp.Offset_y;
        MapViewInfo.TileInfo = [];
        for (var j = row1; j >= row2; j--) {
            hTileSize = CalculateTileSize(vp.Level, j, col1);
            var offsetx = vp.Offset_x;
            for (var z = col1; z <= col2; z++) {
                var tileInfo = {};
                tileInfo.Row = j;
                tileInfo.Col = z;
                tileInfo.Height = hTileSize;
                tileInfo.Widht = TileSize;
                tileInfo.Offset_x = offsetx;
                tileInfo.Offset_y = offsety;
                offsetx += TileSize;
                MapViewInfo.TileInfo[i] = tileInfo;
                i++
            }
            offsety += hTileSize
        }
        return MapViewInfo
    };

В соответствии с методом листовки с картой инициализации по умолчанию параметры можно получить только в пустой лист.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...