我必须在google地图上将用户显示为引脚。我从数据库中获取了用户记录,现在大约有20,000个。我现在正在做的是在加载文档并创建地图后,执行ajax请求以从数据库中获取所有用户。但问题是,当我用大约20,000条记录的json结果响应ajax调用时,我的浏览器卡住了。有时需要20分钟才能加载结果并将其显示为谷歌地图上的图钉。我确信这是错误的方式。
任何人都可以指导我在谷歌地图上加载数据库结果作为引脚的最佳方法。请记住,每个请求的结果集可能会有所不同(根据已登录的用户的城市 - 我们的想法是向附近的用户展示)。
非常感谢提前。
答案 0 :(得分:2)
如果有这么大量的数据,试图绘制20,000个引脚会很慢。
查看类似群集的内容 - http://gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/1.0/examples/advanced_example.html
或者,如果您只向附近的用户展示,那么您附近有20,000名用户吗?根据用户的当前位置缩小返回的用户列表。
答案 1 :(得分:1)
我真的希望将其保持在100针以下 - 对于处理能力较低的设备而言,20,000针脚的FAR太多了。
如果您确定需要渲染所有引脚,那么您需要仔细考虑如何将信息提供给用户。您是否要在页面加载时预先加载所有信息,以便可以重复使用信息,或者如果信息发生更改,您是否希望重新加载信息。
无论如何,如果要以XML格式输出结果以供Javascript读取,则较小的XML文件会提供更快的加载时间。如果您使用的是XML,则可以从...中减少它。
<records>
<record id="1">
<name>blah</name>
<longatude>blah</longatude>
<latitude>blah</latitude>
</record>
<record id="2">
<name>blah</name>
<longatude>blah</longatude>
<latitude>blah</latitude>
</record>
</records>
要:
<records>
<record id="1" n="blah" lat="bah" lon="blah" />
<record id="2" n="blah" lat="bah" lon="blah" />
<record id="3" n="blah" lat="bah" lon="blah" />
</records>
如果您确定所有标记都是必需的,我会使用here提到的Google地图群集,这会减少任何时候在网页上呈现的数字。
答案 2 :(得分:0)
我认为你可能不得不避免使用客户端。我没有尝试过这个,但Fusion Table Layers似乎就是你所追求的,它在googles服务器上保持处理,你可以使用sql之类的查询。每个表和5个表限制为100,000行。
我不确定表的设置,但它可能是一个有趣的替代方案。
https://developers.google.com/maps/documentation/javascript/layers#FusionTables