【问题标题】:How to use data from two Google Fusion tables?如何使用来自两个 Google Fusion 表的数据?
【发布时间】:2018-04-06 20:13:23
【问题描述】:

我正在尝试在美国和加拿大创建“服务区”的谷歌地图,偶然发现了这个融合表层的东西,并认为它会很好,但我遇到了问题。

  1. 如果不支付 google 费用,我无法创建融合表并将其公开,没有办法,我将使用现有的公共表。

  2. 我需要将样式应用到融合表层,但是我正在加载 2 个融合表(层)并且 API 只允许将样式添加到一层。

这是我的代码:

  <script>
    function initMap() {
      // Styles a map in night mode.
      var map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: 40.237395466608156, lng: -93.68512878417971},
        zoom: 3.9,
        styles: []

      });

      var usa_geometry = new google.maps.FusionTablesLayer({
        query: {
          select: 'geometry',
          from: '1ZZ8j0NDbs2dilcQWjLh9xI7qIJso6DgYAoGTbA',
          where: "STATE IN ('North Dakota', 'Minnesota', 'Wisconsin', 'Ohio', 'Indiana', 'Iowa', 'Illinois', 'Kentucky', 'Missouri', 'Tennessee', 'Arkansas', 'Florida', 'Alabama', 'Mississippi', 'Louisiana', 'Texas', 'Oklahoma', 'Kansas', 'Nebraska', 'South Dakota')",
        },
        styles: [
          { 
            polygonOptions: {
            fillColor: "#006db7",
            strokeColor: "#006db7",
            fillOpacity: ".5",
          },
        }],

        map: map,
        suppressInfoWindows: true
      });

      var canada_geometry = new google.maps.FusionTablesLayer({
        query: {
          select: 'geometry',
          from: '1auwG6s4axorHR-QAX3UDXL544pSEXlbxmyu6xvJC',
          where: "Place IN ('Quebec', 'Ontario', 'Manitoba')",

        },
        styles: [
          { 
            polygonOptions: {
            fillColor: "#006db7",
            strokeColor: "#006db7",
            fillOpacity: ".5",
          },
        }],

        map: map,
        suppressInfoWindows: true
      });

    };

  </script>

所以:

  1. 有没有办法在本地使用融合表多边形数据?即导出 CSV 并加载它?

  2. 有没有办法从一个地图图层中的 2 个融合表中加载(连接)数据?

  3. 还有其他我忽略的选项吗?

【问题讨论】:

标签: google-maps google-fusion-tables


【解决方案1】:

有没有办法在本地使用融合表多边形数据?即导出 CSV 并加载它?

是的,Fusion Table can be downloaded as KML,您可以使用第三方应用程序/库(例如 toGeoJson)将其作为 GeoJSON 加载到应用程序中。

有没有办法从一个地图图层中的 2 个融合表中加载(连接)数据?

您必须将merge the tables through the Fusion Tables UI 放入一个 Fusion Table 并加载该图层。

还有其他我忽略的选项吗?

是的,因为您的消息的第一部分不正确:“我无法创建融合表并在不支付 google 费用的情况下将其公开......”

您可以创建Public or Unlisted Fusion Tables,而无需向 Google 付费。

此外,当转到您的 created Fusion Table in the UI,选择 Tools-&gt;Publish 并选择“获取 HTML 和 JavaScript”时,您将看到 FusionTablesLayer 的以下未记录选项“options”:

layer = new google.maps.FusionTablesLayer({
  map: map,
  heatmap: { enabled: false },
  query: {
    select: "col12",
    from: "1ClpNLfPQnhEex1KvGg5FrHPgzXgSu1ZvFEL9a2l1",
    where: ""
  },
  options: {
    styleId: 2,
    templateId: 2
  }
});

您可以使用 options 覆盖 Javascript API 应用的默认样式,并使用您在 Fusion Tables UI 中定义的样式。

这是一个simple sample JSBin,显示了在 Javascript 中为 usa_geometry 定义的 Fusion Table 样式,而在 Fusion Tables UI 中为canada_geometry 定义的 Fusion Table 样式:

【讨论】:

  • 确实很有帮助!谢谢。虽然我真的无法创建公共文档 - 我有一个旧版免费商业帐户,但没有任何选项可以创建可供我组织以外的人使用的公共文档。
猜你喜欢
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
相关资源
最近更新 更多