openlayers3中记载geojson文件,其实没有那么难,官网有例子,网上有demo,是呀,加载个图形,线段或者点的很容易,但是哥这次加载的是一幅json格式的室内地图(高逼格),各种图形错综复杂,交叠更替,一会上一会下,额。说哪去了。。小伙伴不要想多哦~ (坏笑),由此来说,不可避免的就是要素的互相遮盖导致显示不全的问题。
事情的起因是这样的,我用了一个很普通的矢量图层,ol.source.Vector来放置json要素,为了提高加载效率呢,我选择了ol.layer.Image来作为要素的承载图层,运行结果是当缩放级别不是很大的时候显示的很全,但是进一步缩放的话呢,会出现部分要素图形消失或者移位。我了个去,见鬼了塞,经过多方调试,最终无耻的我判定是ol3的bug(坏笑再一次)。
算了,还是按套路出牌的吧,改成用ol.layer.vector来作为要素的承载图层,咦?果然好了。图形要素不会无缘无故的消失了,也不会移位了,但是有些图形压根就不显示了,我了个去。。这次也按套路出牌了,怎么还不行?好吧,calm down baby,再确认了图形以及加载逻辑没问题的情况下,我开始将目光慢慢的转向用于渲染的style这个家伙了,在加载geojson的时候是json里面的特定的顺序加载的,白话来讲就是一层压一层,假如最上面那层是个大的要素,还是最后被渲染,就是不是就惨了,前面的图形要素全被无情的压在了下面。。(不要笑!坏银)好吧,解决问题的方法随之而来,那就是把大块的作为底图的要素不管你啥时候加载(加载顺序可能是随机的),就让你保持在最下面。。(还笑,嘿嘿我也不是什么好人)
庆幸的是Ol3中提供这样了利器,那就是zIndex,如下图。
将最大块的作为底图的要素的style的zIndex设置成1000,其他上面的设置成2000。这样子事情完美解决了!
谁也不会压着谁了。。吼吼吼^_^