Soft_Job 板


LINE

Hi 板上各位大大们早! 一早就来发个实作心得文章! 最近工作关系,整理一下自己做的 Google Maps 的 Marker Clustering 虽然网路上已经有很多的 Marker Clustering 了,但!就是要自己做才狂!(误 LIVE DEMO:https://works.ioa.tw/OA-markerClustering/index.html 各位 Google Maps JavaScript API 的玩家都应该有遇过当 Marker 太多时 把 Maps 视角一拉远时,全部 Marker 挤在一起的困扰吧! 没错 OA's Marker Clustering 就是要来处理这个困扰! 或许你/你会问.. 网路上也有很多关於 Marker Clustering 的 Library,那又何必自己时做一套呢? 我的原因很简单,因为自己做的比较能够掌握概况,视需求去做调整 不用一大包的 code,到底怎麽跑的都摸不透,并且加以利用做出自己想要的功能! 如果试着 Google 关於 Marker Clustering 的文章的话.. 都会找到 Marker Clustering 此篇 http://tinyurl.com/zfsqbaf 而官网上也都推崇的这套 Library http://tinyurl.com/pf3yleq 这套我也开发过,甚至改过其功能~ 但是最後我还是自己刻了属於自己的 Marker Clustering 来制定当不同的 集合 Marker 可以使用不同呈现方式! 这套 OA's Marker Clustering 主要规则就是利用 Google Maps 在不同的放大视角(以下以 zoom 代称)时 产生 集合 Marker,而这些 Marker 用来代表着是多数 Marker 集合 以下分三小以图文方式说明我的演算方法: 1. 如下图是 zoom 为 16 时的状况图,地图上分别有 A、B 以及 C 三个点 https://works.ioa.tw/OA-markerClustering/img/about/01.png
2. 下图代表在 zoom 为 13 时,因为地图视角拉远了,所以造成 A 与 B 互相太靠近 所以必须隐藏 B 只显示 A https://works.ioa.tw/OA-markerClustering/img/about/02.png
3. 所以作法如下图,产生一个 集合 Marker 放置在 A 的位置,并且记录着数量为 2 https://works.ioa.tw/OA-markerClustering/img/about/03.png
这次的 OA's Marker Clustering 中 我拆出两种 Type,主要分别是 moveRun、runAll 其两者在地图上的呈现结果差不多,但方法是不一样的。 前者 moveRun 是当地图移动完後(idle Listener) 先取得地图的范围座标(Bounds),在塞选(filter)出地图范围内的座标点 再依照这些座标点去制作各个 集合 Marker。 而後者的 runAll 型态则是当一开始新增玩所有点之後 立即运算出当地图在各个 zoom 分别的 集合 Marker 当地图 zoom 大小改变时,则可以立即得找出该 zoom 下的 集合 Marker 显示。 以上是概略的说明,更多关於程式的应用可以参考: https://works.ioa.tw/OA-markerClustering/sample.html 若是对我的作品有兴趣的话,可以参考其他的实作喔! https://www.ioa.tw/ 大大们若有其他问题、疑问、讨论,都可以推文、站内信喔! 以上谢谢。 -- --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.227.243.32
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1475629747.A.CC8.html
1F:推 aids61517: 跪着抢头香 10/05 09:15
2F:→ Linux: 回 a 大,我正准备出门说,我都还没到公司XD 10/05 09:15
3F:→ robler: 我比较想知道你自己做了一个是因为别人的不好用吗? 10/05 09:21
4F:→ robler: 那个你想要别人没有的功能是什麽阿? 10/05 09:21
5F:→ y3k: 所以你是Linux还是Windows?XD 10/05 09:29
6F:推 vn509942: 感谢分享:) 10/05 09:35
7F:推 yotsuba1022: 谢谢分享 10/05 09:40
8F:→ Linux: 回 r 大,也不是别人的好不好用的问题,而是自己做一个 10/05 10:03
9F:→ Linux: 掌握度比较高,可调整性也较多~ 10/05 10:04
10F:→ angusyu: 虽然很佩服你啦,但是时间都浪费掉了 10/05 12:17
11F:→ TSW: 你的时间复杂度是O(n^2),可以试着改成O(n) 10/05 13:24
12F:→ TSW: 另外moveRun跟runAll没必要拆成两个方法,可以串在一起 10/05 13:40
13F:推 silentduke: 学习了 推一下 10/05 14:03
14F:→ Linux: 回 TSW 我也正为 O(n^2) 烦恼,因为没时间改XD 10/05 14:27
15F:→ Linux: 另外串在一起,我有试过,不过又拆开了.. 10/05 14:28
16F:→ Linux: 写得有点乱,就乾脆保持原样XD 10/05 14:28
17F:→ TSW: XD 10/05 14:28
18F:推 heartsky7: 猛 10/06 20:47
※ 编辑: Linux (114.43.91.221), 11/06/2016 19:50:40







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP