在Electron应用程序中将Mapbox与脱机地图一起使用

在Electron应用程序中将Mapbox与脱机地图一起使用,electron,mapbox,mapbox-gl-js,Electron,Mapbox,Mapbox Gl Js,有可能有一个电子应用程序显示离线地图吗? 我下载了mbtiles并存储在electron应用程序中,但我无法在electron应用程序的角度侧显示它 我有以下代码: <mgl-map class="map" id = "map" [style]="'mbtiles://assets/resources/downloaded.mbtiles'" [center]="[mapCenter.longitude,

有可能有一个电子应用程序显示离线地图吗? 我下载了mbtiles并存储在electron应用程序中,但我无法在electron应用程序的角度侧显示它

我有以下代码:

<mgl-map
  class="map"
  id = "map"
  [style]="'mbtiles://assets/resources/downloaded.mbtiles'"
  [center]="[mapCenter.longitude, mapCenter.latitude]"
  (load) = "onLoad($event)"
  (dragEnd)="mapDrag()"
  [doubleClickZoom]="false"
  [bearing]="[bearing]"
  [zoom]="[zoom]"
  [pitch]="[pitch]">
</mgl-map>
所以,为了使它在网上工作,我必须改变我的风格

[style]="'mapbox://styles/mapbox/streets-v9'"

是否可以通过nodejs代码或其他方式使其能够为mbtiles服务?

要提供本地mbtiles文件,您需要在
main.js
中注册mbtiles协议。像这样的东西应该可以做到:

 const electron = require('electron');
 const protocol = electron.protocol;
 const path = require('path');
 
 protocol.registerHttpProtocol('mbtiles', (req, cb) => {
   const url = 'assets/resources/downloaded.mbtiles';
   cb({ path: path.normalize(`${__dirname}/${url}`) })
});
您可以在此处阅读electron中的协议处理程序:

 const electron = require('electron');
 const protocol = electron.protocol;
 const path = require('path');
 
 protocol.registerHttpProtocol('mbtiles', (req, cb) => {
   const url = 'assets/resources/downloaded.mbtiles';
   cb({ path: path.normalize(`${__dirname}/${url}`) })
});