1

рендеринг карты гуртам

Тема: рендеринг карты гуртам

Здравствуйте. С помощью JS создаю карту с помощью такой функции:

function initMap() {
    L.TileLayer.WebGis = L.TileLayer.extend({

        initialize: function (url, options) {
            options = L.setOptions(this, options);
            if (options.detectRetina && L.Browser.retina && options.maxZoom > 0) {
                options.tileSize = Math.floor(options.tileSize / 2);
                options.zoomOffset++;
                if (options.minZoom > 0) {
                    options.minZoom--;
                }
                this.options.maxZoom--;
            }
            if (options.bounds) {
                options.bounds = L.latLngBounds(options.bounds);
            }
            this._url = url + "/gis_render/{x}_{y}_{z}/" + options.userId + "/tile.png";
            var subdomains = this.options.subdomains;
            if (typeof subdomains === 'string') {
                this.options.subdomains = subdomains.split('');
            }
        },

        getTileUrl: function (tilePoint) {
            return L.Util.template(this._url, L.extend({
                s: this._getSubdomain(tilePoint),
                z: 17 - this._map._zoom,
                x: tilePoint.x,
                y: tilePoint.y
            }, this.options));
        }
    });

    L.tileLayer.webGis = function (url, options) {
        return new L.TileLayer.WebGis(url, options);
    };


    // create a map in the "map" div, set the view to a given place and zoom
    var map = L.map('mapW', {
        center: [51.505, -0.09],
        zoom: 13
    });

    // add an Gurtam Maps tile layer
    L.tileLayer.webGis(wialon.core.Session.getInstance().getBaseGisUrl('render'), {
        attribution: 'Gurtam Maps',
        minZoom: 4,
        userId: wialon.core.Session.getInstance().getCurrUser().getId()
    }).addTo(map);
}

Карта создается без проблем. Вопрос в том, как добавить доп. элементы на карту?! Например мне необходимо добавить
список с типами карт (картинка во вложении). Может кто работал с этим и может подсказать?!

2

рендеринг карты гуртам

Re: рендеринг карты гуртам

Добрый день

В вашем примере для отрисовки карты используется leaflet и ответ на ваш вопрос стоит искать в документации

3

рендеринг карты гуртам

Re: рендеринг карты гуртам

а есть другие библиотеки для отрисовки?! Кроме того, указанную документацию я уже изучаю, но ответа пока не нашел. Дело в том, что Гуртам использует свои доп. функции к этой библиотеке, и эти функции не описаны в указанной документации....

4

рендеринг карты гуртам

Re: рендеринг карты гуртам

Библиотек для отрисовки карт существуют достаточно много, например
- http://leafletjs.com/
- https://openlayers.org/
- https://tech.yandex.ru/maps/
- https://developers.google.com/maps/
Но в каждой вы столкнётесь с подобными вопросами

Что касается добавления контрола выбора карты, то всё работает ровно как в документации.
Рабочий пример https://sdk.wialon.com/playground/pwB85D0q - справа сверху добавлен контрол выбора карты, делается это так

 // add an Gurtam Maps tile layer
    var gurtamMaps = L.tileLayer.webGis(wialon.core.Session.getInstance().getBaseGisUrl('render'), {
        attribution: 'Gurtam Maps',
        minZoom: 4,
        userId: wialon.core.Session.getInstance().getCurrUser().getId()
    })
    
    var osm = L.tileLayer('//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        sysName: 'osm',
        attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'
    });
    
    var baseLayers = {
        "Gurtam Maps": gurtamMaps,
        "OpenStreetMap": osm
    };

    
    // create a map in the "map" div, set the view to a given place and zoom
    var map = L.map('map', {layers: [gurtamMaps]}).setView([53.9, 27.55], 10);
    
    L.control.layers(baseLayers).addTo(map);
5

рендеринг карты гуртам

Re: рендеринг карты гуртам

shmi пишет:

Библиотек для отрисовки карт существуют достаточно много, например
- http://leafletjs.com/
- https://openlayers.org/
- https://tech.yandex.ru/maps/
- https://developers.google.com/maps/
Но в каждой вы столкнётесь с подобными вопросами

Что касается добавления контрола выбора карты, то всё работает ровно как в документации.
Рабочий пример https://sdk.wialon.com/playground/pwB85D0q - справа сверху добавлен контрол выбора карты, делается это так

 // add an Gurtam Maps tile layer
    var gurtamMaps = L.tileLayer.webGis(wialon.core.Session.getInstance().getBaseGisUrl('render'), {
        attribution: 'Gurtam Maps',
        minZoom: 4,
        userId: wialon.core.Session.getInstance().getCurrUser().getId()
    })
    
    var osm = L.tileLayer('//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        sysName: 'osm',
        attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'
    });
    
    var baseLayers = {
        "Gurtam Maps": gurtamMaps,
        "OpenStreetMap": osm
    };

    
    // create a map in the "map" div, set the view to a given place and zoom
    var map = L.map('map', {layers: [gurtamMaps]}).setView([53.9, 27.55], 10);
    
    L.control.layers(baseLayers).addTo(map);

Благодарю за наводку