mapbox-gl: рассчитать границы карты по центральной точке, уровню масштабирования и размерам

Используя mapbox-gl-native в Node.js, мне нужно узнать фактические границы карты после рендеринга. Я визуализирую карту, как описано в README.md проекта:

var fs = require('fs');
var path = require('path');
var mbgl = require('mapbox-gl-native');
var sharp = require('sharp');

var options = {
    request: function(req, callback) {
        fs.readFile(path.join(__dirname, 'test', req.url), function(err, data) {
            callback(err, { data: data });
        });
    },
    ratio: 1
};

var map = new mbgl.Map(options);

map.load(require('./test/fixtures/style.json'));

map.render({zoom: 12.25, center: [-122.67, 45.52]}, function(err, buffer) {
    if (err) throw err;

    // TODO: get map extent
    // var extent = map.extent(); 
    // extent is {minX: ..., maxX: ..., minY: ..., maxY: ...} or similar...

    map.release();

    var image = sharp(buffer, {
        raw: {
            width: 512,
            height: 512,
            channels: 4
        }
    });

    // Convert raw image buffer to PNG
    image.toFile('image.png', function(err) {
        if (err) throw err;
    });
});

После визуализации карты я хотел бы узнать, каковы границы отображаемой карты. Кто-нибудь знает, возможно ли это с mapbox-gl-native или это можно добавить в API в будущей версии? Или есть другой способ рассчитать фактические границы карты просто из уровня масштабирования, центра карты и размеров карты?

Я использовал и немного скорректировал отличный ответ от @JohnS на аналогичный вопрос, чтобы вычислить уровень масштабирования из заданного экстента. Может быть, есть способ отменить этот расчет, чтобы получить фактический размер?


person forrert    schedule 16.08.2016    source источник


Ответы (1)


Я думаю, вы можете попробовать mapbox/geo-viewport:

geoViewport.bounds([-122.67, 45.52], 12.25, [512, 512])
person stdob--    schedule 16.08.2016