谷歌地图 JavaScript API 热力图层 - 地图上可显示数据点的限制是多少?

11

我刚开始接触 Google 地图 JavaScript API,并且正在将热力图层应用于谷歌地图,就像地图热力图文档中的例子一样:

https://developers.google.com/maps/documentation/javascript/examples/layer-heatmap

我正在为热力图加载很多数据点,但只有有限数量的数据点被显示出来了。

我没有发现数据方面的任何问题。当我将数据集切成更小的块时,每次加载地图时热力图会出现在不同的位置。

但是我可以在使用文档中看到(https://developers.google.com/maps/documentation/javascript/usage),每天的请求限制是2,500个,而我不知道在这种情况下一个请求的定义是什么。

这是指当地图通过initMap() 加载时,整个正在应用的HeatmapLayer 被视为一个单独的请求吗?

还是说,当我创建一个具有4,000个数据点的热图时,每个数据点调用new google.maps.LatLng() 都被视为4,000个单独的请求


热力图层是在您的浏览器中计算的,与 API 限制没有任何关系。 - Nick Shvelidze
当使用initMap()加载地图时,整个应用的HeatmapLayer被视为一个单一请求。这是正确的。下面的答案显示了使用细节。 - Deep 3015
只有加载地图的请求才算请求。您可以绘制的点数没有限制,new google.maps.LatLng() 绝对不算请求。而像地理编码、地点自动完成、方向等则算作请求。您是否在使用这些功能之一?关于使用情况还有更多详细信息,请参见此处:https://developers.google.com/maps/premium/usage-limits 您能否设置一个 jsfiddle 或类似的示例? - Paul Thomas
2个回答

7

按照文档中的示例,我创建了一个示例,创建了10,000个点以在热力图上绘制,没有任何问题。因此不能是任何类型的速率限制。一定还有其他因素在起作用。这个示例甚至没有API密钥,所以是免费计划。

10,000个热力图点演示

<div id="map"></div>
<script>

        var map, heatmap;

  function initMap() {
    map = new google.maps.Map(document.getElementById('map'), {
      zoom: 2,
      center: {lat: 37.775, lng: -122.434},
    });

    heatmap = new google.maps.visualization.HeatmapLayer({
      data: getPoints(),
      map: map
    });
  }

  function getPoints() {

    var lotsOfMarkers = [];

    for( var i = 1; i <= 10000; i++) {

       var random = new google.maps.LatLng( (Math.random()*(85*2)-85), (Math.random()*(180*2)-180) );

        lotsOfMarkers.push(random);
    }

    return lotsOfMarkers;
  }
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?&libraries=visualization&callback=initMap">
</script>

你也可以尝试不同的数字。我尝试了三万个点,限制在一个较小的区域内 - 没有问题。 - Paul Thomas
2
嘿,保罗,感谢你的努力!我已经接受了这个答案。我的代码与你的类似,但对我来说仍然无法正常工作,不过我的问题最终通过将maxIntensity属性添加到地图中并将其设置为较低的数字(1或2)来解决。 - AnonyMouse
@AnonyMouse,很高兴你解决了它。这是否意味着你的点始终在绘制,但由于强度过大,你看不到任何差异? - Paul Thomas
1
我猜是这样的吧?1)地图上只显示了部分点,2)当我放大高密度区域时,点会消失(类似于您的jsfiddle中的情况)。一旦我使用了maxIntensity,1)整个点集就在地图上全部显示了,2)即使我放大到最大,它们仍然可见。我不太熟悉Google Maps JavaScript API,不知道发生了什么。 - AnonyMouse

5
好的,如果您查看开发者控制台,Google Maps JavaScript API有以下配额限制。

enter image description here

这意味着您每天可以加载地图25,000次,用户每秒只能发出1个请求。而无限制则表示地图可以同时加载。

因此,每次调用API密钥,例如此处,都会计为每天1次加载。

注意:每日配额在太平洋时间(PT)午夜重置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接