2016-08-16 8 views
1

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

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 в будущей версии? Или есть другой способ рассчитать фактические границы карты просто с уровня масштабирования, центра карты и размеров карты?

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

ответ

2

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

geoViewport.bounds([-122.67, 45.52], 12.25, [512, 512]) 
+0

спасибо, большая находка! Я проверю это... – forrert