如何使用ArcGIS9.2中的动态显示(Dynamic Display)技术(五)
2008-09-22 09:48
405 查看
ArcGIS9.3对Dynamic Display做了很大的改进,底层显示方式做了本质的一些改变。其中最大的变化是添加了IDynamicCacheLayerManager 接口,这个接口极大提升了动态图层显示时地图的显示效果,9.3以前的版本,地图的缩放都是重复刷新每个地图背景,在地图比较复杂的情况下,几乎是无法忍受的慢,但是如果采用9.3的新接口,可以在使用之前先用类似Arcgis Server的方法对地图进行cache工作,而后在IDynamicCacheLayerManager 中使用connect方法指定cache的文件夹,便能达到理想的效果,其实也可以自己利用该接口直接做cache,那么在多次浏览后,cache的效果使得地图背景显示的效果极佳。部分程序代码如下:
VARIANT_BOOL varCacheable;
ipLayer->put_Cached(VARIANT_TRUE);
IDynamicCacheLayerManagerPtr ipDynamicCacheLayerManager(CLSID_DynamicCacheLayerManager);
hr= ipDynamicCacheLayerManager->Init(m_ipMap,ipLayer);
hr=ipDynamicCacheLayerManager->get_Cacheable(&varCacheable);
CComBSTR bstrFoldName;
CComBSTR bstrFoldPath;
hr= ipDynamicCacheLayerManager->get_FolderPath(&bstrFoldPath);
hr= ipDynamicCacheLayerManager->get_FolderName(&bstrFoldName);
hr= ipDynamicCacheLayerManager->Connect(bstrFoldPath,bstrFoldName);
hr= ipDynamicCacheLayerManager->put_ConsolidatedGroupLayer(VARIANT_TRUE);
hr= ipDynamicCacheLayerManager->put_DetailsThreshold(20);
hr= ipDynamicCacheLayerManager->Invalidate(NULL,VARIANT_TRUE);
hr= ipDynamicCacheLayerManager->put_Format(CComBSTR("PNG"));
break;
目前也可以直接使用ArcGIS Server的地图服务作为Dynamic Layer显示背景。
何种情况下使用Dynamic Display比较合适
前期和客户做过目标显示的比对测试,如果动态目标个数在一千以上,选择使用Dynamic Display比较合适。
如果动态目标数量不多,则建议使用element,主要是程序实现比较简单。
扩展性和底层控制,Dynamic Display效果更好,但是仍有缺陷,例如symbol的部分中文支持。
VARIANT_BOOL varCacheable;
ipLayer->put_Cached(VARIANT_TRUE);
IDynamicCacheLayerManagerPtr ipDynamicCacheLayerManager(CLSID_DynamicCacheLayerManager);
hr= ipDynamicCacheLayerManager->Init(m_ipMap,ipLayer);
hr=ipDynamicCacheLayerManager->get_Cacheable(&varCacheable);
CComBSTR bstrFoldName;
CComBSTR bstrFoldPath;
hr= ipDynamicCacheLayerManager->get_FolderPath(&bstrFoldPath);
hr= ipDynamicCacheLayerManager->get_FolderName(&bstrFoldName);
hr= ipDynamicCacheLayerManager->Connect(bstrFoldPath,bstrFoldName);
hr= ipDynamicCacheLayerManager->put_ConsolidatedGroupLayer(VARIANT_TRUE);
hr= ipDynamicCacheLayerManager->put_DetailsThreshold(20);
hr= ipDynamicCacheLayerManager->Invalidate(NULL,VARIANT_TRUE);
hr= ipDynamicCacheLayerManager->put_Format(CComBSTR("PNG"));
break;
目前也可以直接使用ArcGIS Server的地图服务作为Dynamic Layer显示背景。
何种情况下使用Dynamic Display比较合适
前期和客户做过目标显示的比对测试,如果动态目标个数在一千以上,选择使用Dynamic Display比较合适。
如果动态目标数量不多,则建议使用element,主要是程序实现比较简单。
扩展性和底层控制,Dynamic Display效果更好,但是仍有缺陷,例如symbol的部分中文支持。
相关文章推荐
- 如何使用ArcGIS9.2中的动态显示(Dynamic Display)技术(二)
- 如何使用ArcGIS9.2中的动态显示(Dynamic Display)技术(四)
- 如何使用ArcGIS9.2中的动态显示(Dynamic Display)技术(一)
- 如何使用ArcGIS9.2中的动态显示(Dynamic Display)技术(三)
- 如何使用ArcGIS中的动态显示(Dynamic Display)技术(六)
- 如何在ArcGIS Viewer for Silverlight中使用WCF服务完成降雨量专题图显示(二)
- 如何在ArcGIS Viewer for Silverlight中使用WCF服务完成降雨量专题图显示(一)
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 演示使用DOM技术如何动态生成新的XML文档
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
- 如何使用ajax接受json返回的字符串数组,并动态异步显示到超链接的下面
- 如何使用js动态显示或隐藏DIV
- 如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
- 如何使用空jar包实现动态加载技术
- 如何使用js动态显示或隐藏DIV
- C++--如何实现SDI程序使用CSplitterWnd创建的多个视图的动态地显示和关闭视图
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
- 如何使用iframe实现calendar动态显示,