【问题标题】:Colour-coding points on Google Maps谷歌地图上的颜色编码点
【发布时间】:2014-12-01 23:35:12
【问题描述】:

我目前正在开发一个应用程序作为大学项目的页面,以显示有关房价成本的信息,并希望实现不同年份的颜色编码地图。想法是,每所售出的房子都位于地图上(例如谷歌地图)上的一个点,并根据价格从绿色到红色进行颜色编码。

我正在寻找一种使用 Google Maps API 实现此功能的方法,但一直无法找到不会严重减慢应用程序的解决方案,因为我每年要加载约 3 万个数据点,并且应用程序目前有 5 年的数据。

有人对使用什么有任何建议吗?我查看了 Google 的 Geocharts,但它们并没有真正提供我想要的东西。我还查看了热图,虽然它们得到了我正在寻找的着色效果,但这些点是加权的,因此颜色取决于接近度而不是我指定的变量价格。

【问题讨论】:

  • 也许是 Google Maps Javascript API v3 地图上的 FusionTables 层?

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


【解决方案1】:

30K 点 * 5 年 = 150K 标记。那可能太多了。您应该寻找一种方法来一次只显示一年的历史记录和/或使用marker clustering

关于颜色标记,您可以使用 SVG 标记。您可以轻松更改 SVG 路径的颜色。通过一点计算,您应该能够处理所有点并定义绘制标记的颜色。

圆形 SVG 标记示例:

var icon = {
    path: "M-20,0a20,20 0 1,0 40,0a20,20 0 1,0 -40,0",
    fillColor: // your marker color,
    fillOpacity: .8,
    anchor: new google.maps.Point(0, 0),
    strokeWeight: 0
}

var marker = new google.maps.Marker({
    position: // your marker position,
    map: map,
    draggable: false,
    icon: icon,
    title: 'some title'
});

这是一个简单的例子:

JSFiddle demo

【讨论】:

  • 感谢您的反馈/建议。我计划根据用户选择一次渲染一年的积分,但是最好的方法是使用什么,以免减慢应用程序的速度?我正在寻找的东西基本上只是为我的数据点所在的地图着色,仅此而已。
  • 什么意思?使用什么方法来获取点并将它们绘制在地图上?你用什么做你的后端? php?您想在哪里存储积分?文件?数据库?哪种类型?等
  • 我正在使用 PHP 从 postgres 数据库中提取 lat、lng,这不是问题所在。将所有点映射到地图上所需的时间会减慢速度。
  • 你试过了吗?合理的时间是多少?除此之外,您是否打算展示整个世界地图,或者说,您的 30k 标记所在的整个区域?有一些方法可以只加载在实际地图范围内可见的标记。这将大大加快速度。
  • 您可以查看this answer,我在其中测试了在地图上绘制 7000 个标记所需的时间。平均加载时间为 1.8 秒(对平面文件的 AJAX 请求)。所以 30k 标记应该在 8 秒左右。如果您想知道如何将后端限制为仅返回地图范围内的点,请检查this answer too(例如 mysql)。如果这有帮助,请不要忘记投票! ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 2014-03-15
  • 1970-01-01
  • 2016-07-25
相关资源
最近更新 更多