map.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const fs = require('fs');
  2. const path = require('path');
  3. const basieTilesPath = "F:/";
  4. //获取气象层级
  5. exports.getMap = async (req, res) => {
  6. const { z, x, y } = req.params;
  7. // 支持多种图片格式,优先尝试jpg
  8. // const tilePaths = [
  9. // path.join('F:', (z > 10 ? '地图瓦片/河南-安阳-滑县11-18级_瓦片:谷歌/tiles/' : '地图瓦片全球1-10级_瓦片:谷歌/tiles/'), z, x, `${y}.jpg`),
  10. // path.join('F:', (z > 10 ? '地图瓦片/河南-安阳-滑县11-18级_瓦片:谷歌/tiles/' : '地图瓦片全球1-10级_瓦片:谷歌/tiles/'), z, x, `${y}.png`),
  11. // path.join('F:', (z > 10 ? '地图瓦片/河南-安阳-滑县11-18级_瓦片:谷歌/tiles/' : '地图瓦片全球1-10级_瓦片:谷歌/tiles/'), z, x, `${y}.webp`)
  12. // ];
  13. const path = z > 10 ? `${basieTilesPath}地图瓦片/河南-安阳-滑县11-18级_瓦片:谷歌/tiles/${z}/${x}/${y}` : `${basieTilesPath}地图瓦片/全球1-10级_瓦片:谷歌/tiles/${z}/${x}/${y}`;
  14. const tilePaths = [
  15. `${path}.jpg`,
  16. `${path}.png`,
  17. `${path}.webp`,
  18. ];
  19. // 查找存在的瓦片文件
  20. let foundTile = null;
  21. for (const tilePath of tilePaths) {
  22. console.log(1122, tilePath)
  23. if (fs.existsSync(tilePath)) {
  24. foundTile = tilePath;
  25. break;
  26. }
  27. }
  28. if (foundTile) {
  29. // 设置缓存头
  30. res.setHeader('Cache-Control', 'public, max-age=604800'); // 缓存一周
  31. res.setHeader('Expires', new Date(Date.now() + 604800000).toUTCString());
  32. // 发送文件
  33. res.sendFile(foundTile);
  34. } else {
  35. res.status(404).send('Tile not found');
  36. }
  37. // res.rescc("获取气象层级成功", 200, lvArray);
  38. }