tilestrata-mapnik 插件使用及浅析
条评论tilestrata-mapnik顾名思义,mapnik 作为地图数据源,tilestrata 负责瓦片化的一个插件。
demo 项目可以参考tilestrata-sample-code
1. 安装
npm install mapnik --save |
虽然最新的 mapnik4.0 已经支持了 nodejs 10 版本,这里仍然建议采用nodejs 8 环境,更为稳定,如果安装失败可以考虑切换到nodejs 8
2. 使用
准备好 mapnik 的 xml 配置文件
var tilestrata = require("tilestrata"); |
tilestrata-mapnik 支持的options
有
{ |
3. 效果
demo 项目可以参考tilestrata-sample-code
4. 代码浅析
插件会根据传入的options
构建一个tilelive-mapnik对象 source
source = new MapnikBackend(options, function(err, result) { |
根据options
里面interactivity
的值,分别调用了下面两个函数,对数据源会做个是否满足调用条件的判断,如果满足就设置一下options
里面数据format
的值
// interactivity为 false,设置 format为 png |
针对两种不同的format
,分别创建 mapnik 实例
// format为 png |
在请求具体的某个 zxy 瓦片的时候,就使用 mapnik 获取指定瓦片的方法view
就好了。
image.view(x, y, width, height); // 获取指定瓦片 |
流程图
graph TD A[tilestrata-mapnik] -->|options| B(tilelive-mapnik) B --> C{interactivity} C -->|true| D[getGrid] D --> F[mapnik.Grid] C -->|false| E[getTile] E --> G[mapnik.Image] F --> H[view] G --> H[view]