在很多时候我们会根据不同的用户权限或者区域展现不同的地图给用户,如:某个市的某个区县的用户只能看到所属区县的地图,不需要看其他区县的地图也没权限去看,这个时候各个区县都做份数据就显得太麻烦,尤其是做切片数据更是行不通。所以我们可以做一份市的数据然后使用掩膜的方式将不需要显示的区县或区域进行掩盖,这样就省去了做多份数据的工作。直接上代码
private void setGeometryMask() {
Geometry Beijinggeo = yxlayer.getFullExtent();//获取一个全市Geometry
Geometry Haidiangeo = curGeo;//获取一个区县的Geometry
/*判断两个Geometry不为空*/
if (Beijinggeo != null && Haidiangeo != null) {
/*
* 第一个参数:一个输入的图形 北京市的Geometry
* 第二个参数:一个输入图形的所属图形 如海淀区的Geometry
* 第三个参数:空间参考
* 这两个Geometry可以去服务其获取也可以存储到本地从本地获取
* */
Geometry geo = GeometryEngine.difference(Beijinggeo, Haidiangeo,
map.getSpatialReference());
SimpleFillSymbol symbol = new SimpleFillSymbol(Color.WHITE);
symbol.setOutline(new SimpleLineSymbol(Color.WHITE, 1,
STYLE.DASH));
Graphic g = new Graphic(geo, symbol);
graphicsLayer.addGraphic(g);
/*将地图范围设置到海淀区的范围*/
map.setExtent(Haidiangeo);
}
}