nodejsソースからmapbox-gl-nativeをコンパイルします.
2408 ワード
mapbox-gl-nativeは、mapboxバックエンドレンダリングエンジンであり、mapbox-gl-jsと同じ仕様を使用して、Android、IOS、MacOS、Linuxなどの各種プラットフォームで使用できます.ここではLinuxの下でソースコンパイルされたnodejsバージョンを主に検討します.
システムの要求: 64ビットLinuxまたはMacOS C+14 nodejs v 4.x(公式文書によるとnode v 5+に問題があるという) コンパイルプロセス依存パッケージ をインストールします.コンパイルが完了したら、libフォルダでnodeファイル「mbgl-node.abi-426 node」を生成します.nodejs環境でmapbox-gl-nativeを使用するなら、inportはこのファイルでいいです. 使い方
上に貼った例は、コンパイルされたばかりのnode-mapbox-gl-nativeを用いて地図スタイルをレンダリングし、指定された中心点とレベルで1024*1024の画像を作成して、現在のフォルダに保存することです.nodeで以上のコードを実行すれば結果が得られます.
1、mapbox-gl-nativeを実行するにはグラフィックデスクトップ環境が必要で、グラフィックデスクトップ環境(例えばuuntu serve)ではないと実行会エラーが発生します.
terminate caled after throwingg an instance of'std:runtime_error what(): Failed to open X display.Aborted(core dumped)
解決方法はxvfbをインストールし、xvfbを使用して上記のコマンドを実行します.
fatal error:X 11/Xlib.h:No such file or directory
解決方法:libx 11-devのインストール
システムの要求:
$ npm install
$ make node
var mbgl = require('../platform/node/index.js');
var sharp = require('sharp');
var request = require('request');
var options = {
request: function(req, callback) {
request({
url: req.url,
encoding: null,
gzip: true
}, function(err, res, body) {
if (err) callback(err)
callback(null, {data: body})
});
},
ratio: 1
};
var map = new mbgl.Map(options);
map.load(require('./style.json'));
map.render({
center: [119.58398,29.828955],
zoom: 10,
width: 1024,
height: 1024
}, function(err, buffer) {
if (err) throw err;
map.release();
var image = sharp(buffer, {
raw: {
width: 1024,
height: 1024,
channels: 4
}
});
// Convert raw image buffer to PNG
image.toFile('./image.png', function(err) {
if (err) throw err;
});
});
ここでmbglが引用するのはPlayformフォルダの中のjsファイルで、playtformフォルダは各種プラットフォーム参照の入口であり、playform/nodeの中のindex.jsファイルを開くことができます.先ほどコンパイルして作成したnodeファイルはindex.jsで引用されたことが分かりました.var mbgl = require('../../lib/mbgl-node.abi-' + process.versions.modules);
テストを実行上に貼った例は、コンパイルされたばかりのnode-mapbox-gl-nativeを用いて地図スタイルをレンダリングし、指定された中心点とレベルで1024*1024の画像を作成して、現在のフォルダに保存することです.nodeで以上のコードを実行すれば結果が得られます.
$ node ./test.js
出会う穴1、mapbox-gl-nativeを実行するにはグラフィックデスクトップ環境が必要で、グラフィックデスクトップ環境(例えばuuntu serve)ではないと実行会エラーが発生します.
terminate caled after throwingg an instance of'std:runtime_error what(): Failed to open X display.Aborted(core dumped)
解決方法はxvfbをインストールし、xvfbを使用して上記のコマンドを実行します.
$ sudo apt-get install xvfb
$ xvfb-run -a -s '-screen 0 800x600x24' node ./test.js
2、ソースコードのコンパイルの過程で問題が発生し、コンパイルの失敗を招いた:fatal error:X 11/Xlib.h:No such file or directory
解決方法:libx 11-devのインストール
$ sudo apt-get install libx11-dev