【问题标题】:Load external data to google maps and build heatmap将外部数据加载到谷歌地图并构建热图
【发布时间】:2013-04-17 18:59:28
【问题描述】:

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

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 热图仅适用于美国。

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

【问题讨论】:

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


    【解决方案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,它更简单、更漂亮。他们只是生成图像并将其放置在地图上。您可以使用热图半径来填充您想要的区域。

    希望对你有帮助:)

    【讨论】:

    • 感谢您的提示,现在我正在为我的演示文稿开发演示。关于细节级别的另一个问题。我该如何分组?可能使用服务器端,但我不知道如何将它与谷歌地图结合起来。我应该使用缩放事件然后从服务器加载新数据吗?你能再解释一下吗?
    • 我不确定这是否是最好的方法,但您可以定义每个缩放级别的点数。因此,对于低缩放,您可以对它们进行采样或插值或仅使用平均值,这可能取决于应用程序(这些技术在图像处理中的使用方式类似)。对于高缩放,您可以只获取原始点,您必须做的一件事是查看地图的边界(也有一个 API)并且只获取用户正在查看的点,所以您必须这样做关于缩放和填充。
    • 我在一个 android 应用程序中做了类似的事情,因为当时没有用于热图的 API,所以我通过在填充和缩放上绘制图层来做到这一点,它变得有点无响应,因为它涉及很少(...)计算,但它工作正常。这取决于您想要什么,地图上的图纸有点滞后或初始加载时间较长。如果我是你,我会尝试两者,看看我最喜欢什么。取决于用户是否也经常使用高缩放级别。
    • 顺便说一句,您也可以拥有已经在数据库中定义的必要点的级别,并且仅使用地图边界和缩放级别获取用户正在查看的级别,而不是计算每次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 2017-12-30
    相关资源
    最近更新 更多