-
isaret authorede5fff607
const express = require('express');
const mbgl = require('@mapbox/mapbox-gl-native');
const sharp = require('sharp');
const request = require('request');
const SphericalMercator = require('@mapbox/sphericalmercator');
const fs = require('fs');
const zlib = require('zlib');
const path = require("path");
const crc = require('crc');
const async = require('async');
const advancedPool = require('advanced-pool');
const renderVectorTile = require('./tnvectortile');
const s3 = require('s3');
const aws = require('aws-sdk');
const tileSize = 256;
const merc = new SphericalMercator();
const SCALE_PATTERN = '@[234]x';
mbgl.on('message', function(e) {
if (e.severity == 'WARNING' || e.severity == 'ERROR') {
console.log('mbgl:', e);
}
});
module.exports = {
initRasterRender: function(renderConfig, awsConfig, vtconfig){
var rasterRender = {
renderers: [],
awsS3Client: [],
vtconfig: vtconfig
};
const createPool = function(ratio, min, max, isEng, workerIndex) {
const createRenderer = function(ratio, createCallback) {
var renderer = new mbgl.Map({
ratio: ratio,
request: function(req, callback){
var opts = {
url: req.url,
encoding: null,
gzip: true
};
//"http://52.221.200.213:10101/v2/normal/{z}/{x}/{y}.pbf"
//console.log(req.url);
var parts = req.url.split('/');
var format = parts.slice(-1)[0].split('.')[1];
if(parts.length > 7 && format == 'pbf'){
var z = parts[5] | 0;
var x = parts[6] | 0;
var y = parts[7].split('.')[0] | 0;
var requestdata = {z: z, x: x, y: y, type:'pbf'}
var mqdata = {
channel: null,
msg: null,
requestdata: requestdata,
callback: function(error, data){
var response = {};
response.data = zlib.unzipSync(data);
callback(null, response);
}
}
renderVectorTile(rasterRender.vtconfig, mqdata);
//console.log('%d, %d, %d %s', z, x, y, format);
}else{
request(opts, function(error, res, body){
if(error){
callback(error);
}else if(res.statusCode == 200 ){
var response = {};
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
var isZip = false; //res.headers['content-encoding'] === 'gzip';
//console.log(res.headers['content-encoding']);
if (res.headers.modified) { response.modified = new Date(res.headers.modified); }
if (res.headers.expires) { response.expires = new Date(res.headers.expires); }
if (res.headers.etag) { response.etag = res.headers.etag; }
if(body){
//console.log(body);
if(isZip){
response.data = zlib.unzipSync(body);
}else{
response.data = body;
}
}else{
if(format == 'pbf'){
response.data = new Buffer(0);
}
}
callback(null, response);
}else{
var response = {};
if(format == 'pbf'){
response.data = new Buffer(0);
}
callback(null, response);
//callback(new Error(JSON.parse(body).message));
}
});
}
}
});
// renderer.load(require('./mapmagic_raster.json'));
var style = require(renderConfig.style);
var layers = style.layers;
//console.log(layers.length);
layers.map((layer,index) => {
//console.log(layer.id);
var layout = layer.layout;
if(layout){
var textField = layout['text-field'];
if(layout['icon-image']||textField){
if(layout['symbol-avoid-edges']==null){
layer.layout = Object.assign({},layout,{'symbol-avoid-edges': true});
//console.log(layer.layout);
}
}
if(textField&&isEng){
var listTextField = textField.stops;
if(listTextField){
var list = [];
listTextField.map((field,index) => {
if(field){
field[1] = field[1].replace('_th','_en');
}
list.push(field);
});
textField = Object.assign({},layout,{'stops': list });
layer.layout = Object.assign({},layout,{'text-field': textField });
}else{
layer.layout = Object.assign({},layout,{'text-field': textField.replace('_th','_en')});
}
}
}
});
renderer.load(style);
createCallback(null, renderer);