【问题标题】:Google Maps JavaScript API Heatmap Layer- Limit of data points that can be displayed on the map?Google Maps JavaScript API Heatmap Layer-可以在地图上显示的数据点的限制?
【发布时间】:2017-07-28 19:06:46
【问题描述】:

我是 Google Maps 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限制无关。
  • 当使用 initMap() 加载地图时,正在应用的整个 HeatmapLayer 被视为一个单独的请求这是真的。下面的答案显示了使用细节
  • 只有加载地图的请求才算作请求。您可以绘制的点数没有限制new google.maps.LatLng() 绝对不能算作请求。诸如地理编码、位置自动完成、方向等之类的东西都算作一个请求。你有机会使用其中的任何一个吗?这里有更多关于使用的细节:developers.google.com/maps/premium/usage-limits 你能用一个例子设置一个 jsfiddle 或类似的吗?

标签: google-maps google-maps-api-3


【解决方案1】:

按照文档中的示例,我创建了一个示例,该示例创建了 10,000 个点以绘制在热图上,没有任何问题。所以它不能是任何一种速率限制。一定有别的东西在起作用。此示例甚至没有 API 密钥,因此免费计划。

Ten thousand heatmap point demo

<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>

【讨论】:

  • 您也可以尝试这些数字。我尝试了 30k 点,仅限于较小的区域 - 没问题
  • 嘿,保罗,感谢您的努力!我已经接受了这个作为答案。我的代码与您的代码相似,但仍然无法为我工作,但我的问题最终通过将 maxIntensity 属性添加到地图并将其设置为较低的数字(1 或 2)得到解决。
  • @AnonyMouse 很高兴你把它整理好了。这是否意味着您的点总是在绘制,但由于强度太大而您看不到任何差异?
  • 我猜是吗? 1)这些点只显示在地图的某些部分,2)当我放大高密度区域时,这些点会消失(类似于它们在你的 jsfiddle 中的表现)。我一使用maxIntensity 1) 整套点就会显示在整个地图上,2) 即使我一直放大它们也仍然可见。我对 Google Maps JavaScript API 不够熟悉,不知道那里发生了什么。
【解决方案2】:

好吧,如果您检查开发者控制台,Google Maps JavaScript API 具有以下配额。

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

因此,每次您调用 API 密钥(如 this)时,它都算作每天 1 次加载。

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

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2023-04-02
    • 1970-01-01
    • 2013-05-21
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多