AE创建底图图层

时间:2016-1-18    作者:悬浮的青春    分类: gis二次开发


底图图层是10之后新增的图层类型。底图图层在用户拖拽鼠标过程中不断刷新的图层。不像一般图层。在鼠标按下拖动过程中白色的部分不会自动刷新。

BasemapLayerIGroupLayer方式存在,在许多方面的表现也和GroupLayer相同。 BasemapLayer利用了高性能多线程绘图引擎,可以显著提高你的地图的显示速度和响应能力


下面直接贴部分关键代码。。。



以编程方式添加层BasemapLayer时,使用IBasemapSubLayer.GetConversionStatus确认操作的成功或失败。
RasterBasemapLayer是一种特殊类型的BasemapLayer。用来展示栅格图层。


以下代码示例显示了如何创建一个底图图层并把他加入地图。

[C#]

private void CreateBasemapLayerAndAddLayerToIt(IMap map, ILayer layer)
{
    IBasemapLayer basemapLayer = new BasemapLayerClass();
    IGroupLayer basemapGroupLayer = basemapLayer as IGroupLayer;
    basemapGroupLayer.Add(layer);
    basemapGroupLayer.Name = "Basemap Content";
    map.AddLayer((ILayer)basemapLayer);
}


以下代码示例显示了如何访问底图图层的子图层以及子图层更新如何通知底图图层。


private void UpdateBasemapSublayerAndNotify(IBasemapLayer basemapLayer, IMap map)
{
    ICompositeLayer basemapCompositeLayer = basemapLayer as ICompositeLayer;
    IBasemapSubLayer basemapSubLayer = basemapCompositeLayer.get_Layer(0)as IBasemapSubLayer;
    ILayer innerLayer = basemapSubLayer.Layer;
    IFeatureLayer featureLayer = innerLayer as IFeatureLayer; if (featureLayer != null)
    {
        IFeatureLayerDefinition featureLayerDef = featureLayer as IFeatureLayerDefinition;
        featureLayerDef.DefinitionExpression = "";
    } //When performing operations against the wrapped layer that change properties, you must  //notify the basemaplayer so the display cache can be recreated if necessary. basemapLayer.NotifyLayerChanged(basemapSubLayer as ILayer,
        esriLayerEventHint.esriLayerEventHintProperties, null);
    IActiveView activeView = map as IActiveView;
    activeView.PartialRefresh(esriViewDrawPhase.esriViewGeography, basemapLayer as object, null);
}

完毕。





标签: arcgis二次开发

WRITTEN BY

avatar