angular - 使用@angular/service-worker 缓存 Google Maps API

标签 angular google-maps google-maps-api-3 service-worker angular-service-worker

我正在从事 Angular 5 项目,并希望通过 @angular/service-worker 包提供 PWA 功能。

我无法缓存和提供 Google Maps API 请求(例如图 block )。 在线时不会缓存响应,因此在离线时也不会提供响应。

我尝试过的:

  • 将 map URL 添加到数据组:没有错误,但也没有缓存,离线时出现以下错误:

    错误错误:未捕获( promise ):事件:{"isTrusted":true}(在 main.bundle.js 中)

  • 将 map URL 添加到 assetGroups installMode: prefetch,我在尝试预取时遇到跨域错误:

    请求中不存在“Access-Control-Allow-Origin” header 资源。产地' http://localhost:8080 ' 因此不允许 使用权。如果不透明响应满足您的需求,请设置请求的模式 设置为“no-cors”以获取禁用 CORS 的资源。

  • 将 map URL 添加到 assetGroups installMode: lazy,我得到的结果与 installMode: prefetch 相同

其余数据缓存和服务良好(来自本地主机的静态数据和来自不同端口上本地主机 API 端点的 json)。

我的 ngsw-config.json 看起来像这样:非常感谢任何指点。

{
  "index": "/index.html",
  "assetGroups": [{
    "name": "app",
    "installMode": "prefetch",
    "resources": {
      "files": [
        "/favicon.png",
        "/index.html"
      ],
      "versionedFiles": [
        "/*.bundle.css",
        "/*.bundle.js",
        "/*.chunk.js"
      ],
      "urls": [
          "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700",
          "https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2",
          "https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2"
      ]
    }
  }, {
    "name": "assets",
    "installMode": "lazy",
    "updateMode": "prefetch",
    "resources": {
      "files": [
        "/assets/**"
      ]
    }
  }],
    "dataGroups": [{
        "name": "from-api",
        "urls": [
            "/api/restaurants",
            "/img/**",
            "/icons/**",
            "https://maps.googleapis.com/maps/**"
        ],
        "cacheConfig": {
            "maxSize": 100,
            "maxAge": "1d",
            "timeout?": "3s"
        }
    }]
}

如果需要,很乐意提供更多信息。

最佳答案

我也在与 service worker 一起使用谷歌地图,如果我将它插入 "https://maps.googleapis.com/maps/**" at assetGroups -> 网址:

"urls": [
  "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700",
  "https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2",
  "https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2",
  "https://maps.googleapis.com/maps/**"
]

关于angular - 使用@angular/service-worker 缓存 Google Maps API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49060286/

相关文章:

angular - 导入/导出在 Angular 2+ ngModule 中的作用

javascript - 谷歌地图 : Simple app not working on IE

javascript - Heatmap.js 未渲染

javascript - option 和 jQuery .click() 不能一起工作

google-maps-api-3 - 是否可以在 Google map API v3 中限制可编辑形状的尺寸/面积,以便无法将其绘制为大或小?

html - 创建父子数据的嵌套下拉菜单

java - 从服务器发送pdf文件到客户端

html - 禁用时如何隐藏垫输入

javascript - 防止 Google map 因错误而禁用输入

javascript - 需要从google map API获取纬度和经度