实现地图POI非同源数据碰撞检测

问题:

因为现有的地图样式中使用了多种来源的POI数据,所以在zoom值发生改变时无法发生碰撞检测,因此会有POI重叠的现象产生。

上图中显示的是圣彼得堡的世界杯体育场的位置,两个兴趣点(POI)因为没法碰撞检测而发生了重叠。

前期设计:

在设计之初因为了解到这种情况会发生,暂时没有特别好的情况下我们提出了多种解决方案,比如不同来源的数据在icon样式上采用了不同的设计,数据库当中的优质数据我们用背景带类型颜色+i白色icon的方式来高亮显示,相反打到瓦片里的只有经纬度和类型的数据我们用白色背景+类型颜色icon的方式显示,降低视觉权重,再比如不是非常重要的POI点像地铁出入口直接用图标,不显示它的名称和类型。通过这一系列的设计尽可能的增加地图的易读性。但是这些并没有从根本上解决图标重叠的问题。

预想方案:

之前工程师在处理压缩的底图数据时,发现已经压缩成PBF的数据可以逆向工程变成json数据,解压出来的json数据就会带有一个地理位置的名字类型和经纬度等信息,这时就提出了一种猜想,可不可以将osm的POI数据提取出来,清洗整理后导入到自己的数据库,让所有地图上的兴趣点都变成一个数据源,这样就对兴趣点的碰撞检测提供了可行性。

已知在同一数据来源时可以用一个图层在样式文件中赋予样式特性,因此也就有了碰撞检测的条件,希望上述猜想得到验证,因为数据量巨大工程师甚至调用了一台32核的服务器跑了小半天…

最后感谢公司给力的工程师们,通过不懈的努力可以让用户可以有更好的用户体验,希望大家在使用产品时会更加的便捷吧!