0

在我的数据库中,我有一组邮政编码和特定邮政编码的订单数量

zip    | count
--------------
12-456 |   23
12-100 |  120
12-220 |   93
10-300 |    2

我需要一种使用 GoogleMaps 将数据显示为热图的方法。我在https://developers.google.com/maps/documentation/javascript/examples/layer-heatmap找到了基本示例 这是一个不错的开始,但它需要我将所有点添加到我的页面。

是否有显示页面的选项,然后向服务器发出请求以获取所有积分?我知道我可以向服务器发出 ajax 请求,得到 json 作为结果,然后在循环中将这些点添加到taxiData(来自示例的代码),但也许这可以更容易完成?在波兰有近 23000 个邮政编码,所以我可以从服务器获得非常大的数据集。

是否可以将数据加载为latitude, longitude, count?我可以将邮政编码转换为位置(GPS 坐标),但我想在该位置发送订单数量。

如何显示特定区域的热图?就像在这个示例中一样:http: //maps.forum.nu/v3/gm_customTiles.html热图仅适用于美国。

任何关于如何开始的想法(链接、示例)都会有很大帮助。

4

1 回答 1

1

第一个问题:只是一个想法,您可以对邮政编码进行抽样并让用户选择详细信息。如果他想要更多细节,则需要加载更多。在低地图缩放中,您不需要那么多点。如果用户想要在更高的地图缩放中获得更多细节,那么您可以获取更多。但是不要低估 ajax,我有一个网站页面,它加载了大约 9000 个数据库条目,它在大约 3 秒内准备就绪,可能更短。只是不要阻止页面,也不要忘记使用加载器:)

第二个问题:在 SQL 中你可以做

SELECT latitude, longitude, COUNT(*) count FROM Table GROUP BY latitude, longitude

这将为您提供唯一的纬度和经度对及其计数。如果你愿意,你可以使用小数点来获得或多或少的准确性。

第三个问题:该地图使用 MCustomTileLayer。您可以在此处查看和下载源代码http://code.google.com/p/biodiversity-imageserver/source/browse/trunk/unittest/gmap3/MCustomTileLayer.js?r=49

该网站的示例:

var hMap = new MCustomTileLayer(map,theme);

var oDiv = document.getElementById('controlsDiv');
var tlcOptions = {
    parent: oDiv,
    overlay: hMap,
    caption: theme.toUpperCase()
}
var tlc = new MTileLayerControl(tlcOptions);

老实说,我更喜欢标准的 google API,它更简单、更漂亮。他们只是生成图像并将其放置在地图上。您可以使用热图半径来填充您想要的区域。

希望能帮助到你 :)

于 2013-04-17T20:30:12.300 回答