0

我正在尝试复制此演示代码: https ://developers.google.com/fusiontables/docs/samples/circle_example?hl= en,它使用 FusionTablesLayer 来查询融合表中的数据。主要是

var layer = new google.maps.FusionTablesLayer({
   query: {
      select: 'lat',
      from: tableid,
      where: 'ST_INTERSECTS(lat, CIRCLE(LATLNG(44.988265,-93.259191), 5000))'
   },
   key: myKey
});
layer.setMap(map);

根据 Chrome 扩展指南,我将它作为一个独立页面工作,所有 JS 都移动到另一个文件中。我已修改清单文件以允许内容安全策略设置中的所有引用服务器。

{
  "name": "GDG Twin Cities - Fusion Tables and Chrome extensions",
  "version": "1.0",
  "manifest_version": 2,
  "content_security_policy": "script-src 'self' https://maps.google.com https://maps.gstatic.com; object-src 'self'",
  "description": "Moving Fusion Tables demo into the chrome extension",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "https://maps.google.com/"
  ]
}

但是,我现在在“未捕获的错误:此上下文中不允许从字符串生成代码”的控制台中出现 错误

我将如何使用 FusionTablesLayer 将我正在寻找的内容放入我的 chrome 扩展中?

4

2 回答 2

0

必须有一些eval()new Function()用于融合表的代码。默认情况下,CSP 不允许这样做。尝试以下建议之一:

  • AngularJS(来自谷歌的一个 JS 框架)有一种叫做“ CSP 模式”的东西,它不使用 eval。也许融合表有类似的东西?
  • 按照文档中的说明添加unsafe-eval到您的 CSP 。
于 2012-11-02T07:24:19.450 回答
0

我最终将功能性浏览器操作页面移到了网络上,并在 popup.html 中放置了一个 iFrame。

于 2012-11-20T15:12:40.653 回答