openlayers 地图限制区域实现方法
一、利用arcmap裁剪实现
之前遇到一个项目,需要只显示某个区县范围内的地图,其余部分不要显示,其实就是地图限制区域的问题,当时由于时间紧急,第一个想到的方法,就是利用arcmap的裁剪方法来实现。
具体想法:弄个某县边界图层,再绘制一个巨大范围的矢量面,用这个图层去裁剪范围面,形成一个新的图层,这个图层中间镂空的地方就是该县的边界区域,地图加载的时候一起加载进去,然后镂空图层样式设置成实心的,这样底图就在该区域不显示,具体arcmap操作就不说了,很简单。实现效果如下:
二、canvas的clip方法实现
我们都知道openlayers是基于canvas创建的,所以可以利用一下canvas的方法去实现。(例子里那个心形的地图就是用的这个方法)
具体代码:
const _this = this;
const boundFeature = new GeoJSON().readFeatures(jsBound);
wmtszjVecLayer.on('prerender', function(evt) {
const canvas = evt.context;
canvas.save();
const coords = boundFeature[0]