mapbox-gl:从中心点、缩放级别和尺寸计算地图边界

Posted

技术标签:

【中文标题】mapbox-gl:从中心点、缩放级别和尺寸计算地图边界【英文标题】:mapbox-gl: calculate map bounds from center point, zoom level and dimensions 【发布时间】:2016-12-23 04:01:02 【问题描述】:

在 Node.js 中使用 mapbox-gl-native 我需要在渲染后找出地图的实际边界。我正在渲染项目的 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 的excellent answer 并将其稍微调整为类似的问题,以计算给定范围的缩放级别。也许有办法恢复这个计算以获得实际范围?

【问题讨论】:

【参考方案1】:

我觉得你可以试试mapbox/geo-viewport:

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

【讨论】:

以上是关于mapbox-gl:从中心点、缩放级别和尺寸计算地图边界的主要内容,如果未能解决你的问题,请参考以下文章

如何计算适当的谷歌地图缩放级别

百度地图常用 获取中心点 缩放级别等

在缩放级别计算每像素米的传单

如何在捏合和缩放时找出地图的中心点

缩放以适合非标准尺寸地图的所有注释

uniapp微信小程序图片裁剪插件,支持自定义尺寸定点等比例缩放拖动图片翻转剪切圆形/圆角图片定制样式