1

我知道我正在忽略/没有考虑一些基本的东西,但我不知道我不知道什么......

尝试使用 Fusion Tables 填充一组 Google Maps API 圆形对象并将它们放置在地图上。

目前我可以像这样对数组进行硬编码:

citymap['Dane'] = {
    center: new google.maps.LatLng(43.10599621690524, -89.38682556152344),
    population: 5000000
};

...并将它们放在地图上

而且我能够从 Fusion Tables 返回 JSON,循环并创建我认为的数组并显示它,但我无法让圆形对象出现。

任何关于我需要谷歌/学习的建议将不胜感激。

4

2 回答 2

0

您想查看Circle类;它提供了一种简单的方法来创建圆形并将它们放置在地图上。好的,所以我看到你已经找到了 shape 类,所以你很好。

我认为您的问题是您将处理循环中的所有内容都转换为字符串:

citymap = {};
for (var i = 0; i < data.table.rows.length; i++) {
    citymap += 'citymap[\'' + data.table.rows[i][0] + '\'] = {' +
        'center: new google.maps.LatLng(' + data.table.rows[i][1] + '),' +
           'population: 2842518};';
}

我认为您想要看起来更像这样的代码:

citymap = new Array();
for ( var i = 0; i < data.table.rows.length; i++ ) {
    var circleData = {
        center: new google.maps.LatLng( data.table.rows[i][1] );
        position: 2842518
    }
    citymap.push( circleData );
}

我意识到我遗漏了一些其他数据,但你明白了。我相信您的主要问题是您正在对代码进行字符串化。

于 2012-04-27T22:52:17.653 回答
0

这是一个使用新的 Trusted Tester API 生成要在地图上显示的多边形的示例:

https://developers.google.com/fusiontables/docs/samples/mouseover_map_styles

逻辑应该是相似的,但是您将创建一个圆形而不是多边形:

new google.maps.Circle({
  center: new google.maps.LatLng(<lat>, <lng>),
  strokeColor: "#FF0000",
  strokeOpacity: 0.8,
  strokeWeight: 2,
  fillColor: "#FF0000",
  fillOpacity: 0.35,
  map: map,
  radius: <radius>
});
于 2012-04-27T22:56:04.160 回答