【问题标题】:Save Mapbox static api response to png file with node sdk js使用节点 sdk js 将 Mapbox 静态 api 响应保存到 png 文件
【发布时间】:2019-06-04 16:27:01
【问题描述】:

使用 mapbox-sdk-js 使用以下代码创建的 png 文件不可读,但响应标头显示内容“image/png”且状态代码为 200。这不是我的令牌的问题,否则,如果我使用具有相同参数的 curl 我得到一个正确的 PNG 文件(和一个漂亮的地图)。

你能帮我把回复保存到一个文件吗?谢谢!

const mbxStatic = require('@mapbox/mapbox-sdk/services/static')
const fs = require('fs')

// Get config
const MAPBOX_TOKEN = process.env.MAPBOX_TOKEN

const staticClient = mbxStatic({ accessToken: MAPBOX_TOKEN })

staticClient
  .getStaticImage({
    ownerId: 'mapbox',
    styleId: 'streets-v10',
    width: 200,
    height: 300,
    position: {
      coordinates: [-77, 38],
      zoom: 5
    }
  })
  .send()
  .then(response => {
    const image = response.body
    console.log(response.headers)
    fs.writeFileSync("./map.png", image, 'binary')
  }).catch(error => console.log(error));

【问题讨论】:

    标签: node.js png mapbox fs


    【解决方案1】:

    所以我和你有同样的问题。 我的解决方案是添加一个泵功能并使用 createWriteStream 功能保存结果。

    我也没有使用 staticClient,而是使用 mapBox 静态游乐场的链接。

    const { promisify } = require('util');
    const request =require('request');  
    const fs = require('fs');
    
    
    await pump(request(url), fs.createWriteStream('./map.png', {encoding: 'base64'}));
    

    但我想如果你替换请求调用,你也可以保存 staticClient 的响应。不过没试过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-29
      • 2021-09-08
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      相关资源
      最近更新 更多