关于地图marker的聚合问题

当地图上的点过多时,采用聚合方法进行标注优化,通过在地图上划分网格实现。移动地图时,原有的聚合点可能会散开或重新聚合。解决办法是建立全图网格和当前视窗网格,并确保它们重叠,保证标记稳定。文中提到作者通过三个版本的迭代,不断优化聚合的效率和代码质量,最后分享了基于高德地图平台的自定义聚合代码。
摘要由CSDN通过智能技术生成

当地图上点太多的时候你就会想到要用点的聚合,这个点改如何聚合呢?

聚合原理:在地图上画网格,然后有点落在这个网格里就标注,没有就不标注。如果有多个点落在这个网格,仍然只标注一个点。

 

网上介绍的大体上都有这样一个弊端:当你移动地图的时候,之前聚合的点有可能散开,多个散点有可能聚合。

 

那么怎样才能实现拖动地图的时候之前标注的点不变动呢?

 

解决办法:

       网格一:在整个地图上画网格

       网格二:在当前视窗上画网格

当然这两个网格的小格子边长要一样

       想办法把网格一和网格二重叠,即网格二中的格子在网格一中一定有一个与之重叠的格子。然后在网格二上面marker即可


----------- 2016-02-16 --------

犹豫了好久,今天决定补上源码。

聚合从毕业实习到如今,从不会js到现在陆陆续续写了3个版本,三个版本代码逻辑都不一样,优化程度也不一样,它们见证了我js学习的提升,同时也有运行效率上的深度提升。

第一个版本,虽然说js是完全面向对象的,但是我写的时候完全没有面向对象的觉悟(因为还在蹒跚学步)

第二个版本,如果说第一个版本是因为工作需要,那么第二个版本完全是处于个人爱好了,因为我想要把聚合写成面向对象的,同时提高聚合的效率。

第三个版本,也就是现在这个版本(高德地图版本,前两版是PGIS版的),代码更加精简,逻辑更加清楚。

由于前两版本已经用于工作,故无法贴出源码,第三个版本是我前天写的,跟以前的版本逻辑完全不一样,因此奉上代码,请各位看官指正。

高德地图自带了聚合的API,我这里只是借用高德地图的平台写了自己的聚合。

精华部分请看marksCluster.js

【目录结构】

marksCluster.html
└ ─ js
      └ ─ marksCluster.js
      └ ─ jquery.js

【marksCluster.html】

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta name="viewport" content="initial-scale=1.0, user-scalable=no" >
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>聚合与离散</t
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值