在Chrome扩展程序中使用Google Fusion Table图层

时间:2012-11-01 05:50:15

标签: google-chrome google-chrome-extension google-fusion-tables

我正在尝试复制此演示代码: 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扩展程序中?

2 个答案:

答案 0 :(得分:0)

融合表代码中必须使用一些eval()new Function()。这是not allowed by CSP by default。尝试以下建议之一:

  • AngularJS(来自谷歌的JS框架)有一个名为“CSP mode”的东西,它不使用eval。也许融合表有类似的东西?
  • unsafe-eval添加到您的CSP中described in docs

答案 1 :(得分:0)

我最终将功能性浏览器操作页面移至网络,并将一个iFrame放入popup.html。