




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7 怎样在地图上添加一条 第8 怎样在地图上添加一个标注 第9 怎样实现地图窗口坐标和逻辑坐标之间的转 第5章开发函数 第1 怎样获取地图文档图层列 第2 怎样更新地图文档中的图层的状 第3 怎样获取鼠标当前位置信 第4 怎样添加和删除地图鼠标.................................................................................第5 怎样用鼠标获取一个 第6 怎样用鼠标获取一条 第7 怎样用鼠标获取一个矩 第8 怎样用鼠标获取一个 第9 怎样用鼠标获取一个多边 第10问怎样实现点击查 第11问怎样实现线查 第12问怎样实现矩形查 第13问怎样实现圆查 第14问怎样实现多边形查 第15问怎样实现属性条件查 第16问怎样实现点击+条件查 第17问怎样实现线+条件查 第18问怎样实现矩形+条件查 第19问怎样实现圆+条件查 第20问怎样实现多边形+条件查 第21问怎样添加一个要 第22问怎样编辑一个要 第23问怎样删除一个要 第24问怎样对一个要素做缓冲区分 第25问怎样对查询结果进行统计分 第26问怎样实现圆裁 第27问怎样实现多边形裁 第28问怎样实现拓扑分 第29问怎样实现路径分 第30问怎样获取MapGIS数据源列 第31问怎样获取MapGIS数据源中的数据库列 第32问怎样获取MapGIS数据库中的图层列 第33问怎样通过图层索引获取图层名 第34问怎样实现两个图层叠加分 第35问怎样在操作结束后把鼠标切换回空状 第6章高级 第1 怎样实现自定义控件开 第2 怎样实现GIS功能点综合应 第3 第1章开发第1问MapGISIGServerIGServer平台、数据库、浏览器、Flex集成开发环境。Windows WindowsXPWindows2003Windows20087。.NET环境 Web服务器 数据库 浏览器:IE6以上系列版本、Firefox集成开发工具:VisualStudio第2问怎样配置MapGISIGServer参照第一章第一问中MapGISIGServer的开发环境,在操作系统中安装MapGISIGServer平台、数据库(根据需要选择安装、浏览器等。GIS服务器与数据库的配置。服务器配置:安装平台后,在服务管理器(MapGISServerManager)中已默认配GIS服务器(DCServerIGServer服务器等各项配置。根据实际中设置IGServer相应配置项。数据组织与发布:根据开发中采用的地图加载方式(地图类型MapGIS二次开发前,必须确保GIS服务器的系统服务中数据服务、IGS服务已启动,同时MapGISServerManager中的DCServer服务、IGServer服务也处于启动状态。图1-1启动数据服务与IGS服1-2DCS与IGS第3问怎样配置SilverlightSilverlight4的二次开发环境,需要安装配置VisualStudio2010集成开发环境,Silverlight4ToolsforVisualStudio2010、Silverlight_4_Toolkit(Silverlight4控件安装包)以及Silverlight客户端插件,具体的环境配置如下:1、安装VisualStudioMapGISIGServerSilverlight4VisualStudio2010,4应用程序。公司VisualStudio2010地址为: 2、安装Silverlight4ToolsforVisualStudio2010Silverlight4ToolsforVisualStudio2010是用于VisualStudio2010或VisualWebDeveloper2010学习版的一个加载项,它为在Silverlight中创建应用程序提供若干功能。在安装Silverlight4Tools时,将安装以下组件。Silverlight4DeveloperSilverlight4Silverlight4VisualStudioWCFRIA服务公司官网地址: Silverlight_4_ToolkitSilverlight4的控件集成安装包,以方便开发人员开发。官网地址:/releases/view/43528第4问SilverlightMapGISIGServerSDK包括两个部分:一套为基础开发库,不允许用户修 GPS导航 成。Silverlight开源库主要功能控件及说明如下:1-3Silverlight开发开源库控件(主要AnnotationStyleEditorPointStyle OGCCatalog、OGCConditionInput件图层类控LayerConditionInPutLayerDataViewer目前,SilverlightSDK1.0。关于MapGISIGServer基于SilverlightSDK的更新,请随时关注MapGIS发布信息。第5问MapGISIGServerSilverlight在Silverlight集成开发环境(→VisualStudio2010)中创建MapGISIGServerSilverlight的新工程,具体步骤如下:1-3VisualStudio20101-4VisualStudio2010中新建工程(二SlApp,单击“浏览”选择工程存放的路径,如下图所示:1-51-6新建Silverlight5、此时在解决方案视图中有2个项目,SlApp和SlApp.web,选择SlApp 1-8添加MapGISIGServer提供的dll文件的或者在示例站点ZDIMSDemo的Debug 1-9选择MapGISIGServer提供的dllSilverlight二次开发库的控件添加到开发集成环境。选择“视图->工具箱”,在“常规”1-101-11添加自定义控件(二8ZDIMS1.0.dll,可以看到新加入的控件被勾选,单击确定,完成MapGISK9IMSSilverlight控件的导入,如下图所示:1-12选择dll1-13SilverlightMapGISIGServer平台的二次开发了。第6问怎样使用MapGISIGServerSLMapGISIGServerSilverlightdll,是一个单独提供的动ZDIMS1.0.dlldebug(ZDIMSDemo\Bin\Debug中。MapGISIGServerSilverlightSilverlight项目时直接引zdimsdll库。详细操作可参考本章第5问创建一个Silverlight工程的操作。MapGISIGServerSilverlight的开源功能组件,位于开源示例站点的调 1-14要使用MapGISIGServerSilverlight的开源功能组件,需要将示例站点的动态库图1-15开源1-16第7问怎样更新MapGISIGServerSLMapGISIGServerSilverlight功能组件,分别将基本功能组件库和开源功能组件的“” 处先移除功能库对应的dll(ZDIMS1.0.dll或ZDIMSDemo.dll然后再第8问新建一个Silverlight用户控件,打开*.xaml<<UserControlxmlnsx="d:DesignHeight="300"d:DesignWidth="400"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="200"/>usingZDIMS.Map;namespaceSlApp{publicpartialusingZDIMS.Map;namespaceSlApp{publicpartialclassMapContainer_s:{publicMapContainer_s(){}publicvoid{m_mapContainer.Width=800;m_mapContainer.Height=600;m_mapContainer.VerticalAlignment=VerticalAlignment.Center;m_mapContainer.Margin=newThickness(10,10,0,0);}}}第9问1TileLayer控件,将其入瓦片数据名称比如WhMap和ServerAddress服务器地址比如AutoGetMapInfoXAML<UserControl<UserControl d:DesignHeight="300"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="253">Width="200"AutoGetMapInfo="True"HdfName="WhMap" "usingZDIMS.Map;namespace{publicpartialclassMapTile_s:{usingZDIMS.Map;namespace{publicpartialclassMapTile_s:{privateTileLayerm_tile=null;public{}publicvoid{m_mapContainer=new{XMinMap=YMinMap=XMaxMap=YMaxMap=m_mapContainer.Height=m_mapContainer.Margin=newThickness(10,10,0,m_tile=newTileLayer(){HdfName="WhMap",ServerAddress=""}}}中输入瓦片数据名称比如wh和ServerAddress服务器地址比如<<UserControl d:DesignHeight="300"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="275">Name="vectorMapDoc1"Width="200"AutoGetMapInfo="True" "/>usingnamespace{usingnamespace{publicpartialclassMapVector_s:{privateVectorMapDocm_vector=null;publicMapVector_s(){}publicvoid{m_mapContainer=new{Width=Height=Margin=newThickness(10,10,0,XMinMap=YMinMap=XMaxMap=YMaxMap=m_vector=new{ame="wh",ServerAddress=""}}}}<UserControl<UserControld:DesignHeight="300"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="341">Width="200"AutoGetMapInfo="True"HdfName="WhMap" "Name="vectorMapDoc1"Width="200""usingZDIMS.Map;namespaceusingZDIMS.Map;namespace{publicpartialclassMapTileDoc_s:{privateIMSMapm_mapContainer=null;privateTileLayerm_tile=null;publicMapTileDoc_s(){}publicvoid{m_mapContainer=new{Width=Height=Margin=newThickness(10,10,0,m_tile=new{HdfName="WhMap", m_vector=new{ame= }}}<UserControl <UserControl d:DesignHeight="300"d:DesignWidth="400"<Gridx:Name="LayoutRoot"<ColumnDefinitionWidth="194*"<ColumnDefinitionWidth="206*"Name="iMSMap1"VerticalAlignment="Top"Width="153">Width="68"AutoGetMapInfo="True"HdfName="WhMap" "Name="iMSMap2"VerticalAlignment="Top"Width="153"Grid.Column="1">Width="68"AutoGetMapInfo="True"HdfName="WhMap" "usingZDIMS.Map;namespace{publicpartialclassMapMulti_s:{privateIMSMapm_mapContainer_l=null;privateIMSMapm_mapContainer_r=null;privateTileLayerm_tile_l=null;publicMapMulti_s(){}publicvoid{m_mapContainer_l.Width=400;m_mapContainer_l.Height=m_mapContainer_l.Margin=newThickness(10,10,390,0);m_tile_l=newTileLayer(){HdfName="WhMap", m_mapContainer_r=newIMSMap();m_mapContainer_r.Width=400;m_mapContainer_r.Height=m_mapContainer_r.Margin=newThickness(450,10,0,0);m_tile_r=newTileLayer(){HdfName="WhMap","}}}2Button控件个标注类IMSMark的对象,把BitmapImage对象的传入这个标注类对象,最后将IMSMark作为标注接口添加到MarkLayer的对象中。<<UserControl d:DesignHeight="600"d:DesignWidth="800"<Gridx:Name="LayoutRoot"VerticalAlignment="Top"Width="600"Margin="163,42,0,0">Width="200"HdfName="WhMap"AutoGetMapInfo="True" "<ButtonContent="添加 Name="addPic"VerticalAlignment="Top"Width="75"Click="addPic_Click"/>usingZDIMS.Map;usingZDIMS.Event;usingusingSystem.Windows.Media.Effects;usingnamespace{publicpartialclassMapPicture:{publicMapPicture(){}publicvoid{m_markLayer=newMarkLayer();m_markLayer.EnableGPUMode=true;}privatevoidaddPic_Click(objectsender,RoutedEventArgs{//IMSMarkmark;m_markLayer.EnableMarkHiden=false;m_markLayer.EnablePolymericMark=true;mark=newIMSMark(newImage(){
Width=HeightHeight=mark.X=114.2879;mark.Y=}}}<UserControl<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="615">Name="iMSEagleEye1"Width="140">Name="vectorMapDoc1"Width="33" ame="wh"AutoGetMapInfo="True" "/>Width="200"HdfName="WhMap"AutoGetMapInfo="True" "usingZDIMS.Map;namespace{publicusingZDIMS.Map;namespace{publicpartialclassMapEagleDif_s:{privateIMSEagleEyem_eagle=null;privateVectorMapDocm_vector=null;privateTileLayerm_tile=null;public{}publicvoid{m_mapContainer=new{Width=Height=Margin=newThickness(10,10,0,m_eagle=newIMSEagleEye();{{ame="wh",ServerAddress=""m_tile=newTileLayer(){HdfName="WhMap",ServerAddress=""}}}<UserControl <UserControl d:DesignHeight="600"d:DesignWidth="800"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="566">Name="vectorMapDoc1"Width="200" ame="wh"AutoGetMapInfo="True" Name="iMSEagleEye1"Width="200"/>Name="switchEagle"VerticalAlignment="Top"Width="75"Click="switchEagle_Click"/>namespacenamespace{publicpartialclassExgEagle:{public{}privatevoidswitchEagle_Click(objectsender,RoutedEventArgs{}}}端用户显示什么地图数据。ButtonshowHDF函数显示瓦片地图,点击本个调用showDoc显示地图文档。<<UserControld:DesignHeight="600"d:DesignWidth="800"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="596"/><ButtonContent="显示地图文档"Height="23"HorizontalAlignment="Left"<ButtonContent="显示地图文档"Height="23"HorizontalAlignment="Left"namespacenamespace{publicpartialclassDiffMap:{privateTileLayerm_tile=null;public{}{if(m_tile!=null)if(m_vector=={ame="wh";m_vector.ServerAddress="}}privatevoidshowHDF_Click(objectsender,RoutedEventArgs{if(m_vector!=null)if(m_tile=={m_tile=newTileLayer();m_tile.AutoGetMapInfo=}}}}第18片地图显示,然后拖动两个Button控件到界面中,给第一个Button的鼠标点击赋值响<<UserControld:DesignHeight="600"d:DesignWidth="800"<<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="533">Width="200"AutoGetMapInfo="True"HdfName="WhMap" "Name="getWidth"VerticalAlignment="Top"Width="75"Click="getWidth_Click"/>Name="getHeight"VerticalAlignment="Top"Width="75"MouseMove="getHeight_MouseMove"/>namespacenamespace{publicpartialclassMouseEvent:{public{}{}{}{}}}显示范围(xMinMapyMinMapxMaxMapyMaxMap)属性一定要设置,或者将AutoGetMapInfo属性设置true,该情况下的显示范围属性可以设置为任何自己想要初始化时第20问什么原因导致本机可以出图但其他机器不能出1、如果本地可以出图,发布Silverlight应用程序后在客户端如果不能正常如图,则可能原因是客户端浏览器设置了导致不能到Silverlight应用程序。2、如果用VisualStudio2010调试或运行程序能正常显示地图,而发布后不能正常显示地图,则可能是本地计算机设置了导致Silverlight应用发布后不能到GIS第1问2Button控件,如果要想在鼠标点击这个按钮的时候让地图复位,则需要进行以下几步操作:首先,添加一个onclick()为IMSOperype.RestoreButton控件的click属性赋值为oncick()。<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="642">Width="200"HdfName="WhMap"AutoGetMapInfo="True" "Name="restore"VerticalAlignment="Top"Width="75"Click="restore_Click"/>usingusingnamespace{publicpartialclassRestore:{publicpublic{}{}}}第2问2Button控件,如果要想在鼠标点击这个按钮的时候让地图刷新,则需要进行以下几步操作:首先,添加一个onclick()<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="642">Width="200"HdfName="WhMap"AutoGetMapInfo="True" Name="refresh"VerticalAlignment="Top"Width="75"Click="refresh_Click"/>usingusingnamespace{publicpartialclassRefresh:{public{}privatevoidrefresh_Click(objectsender,RoutedEventArgs{}}}第3问2Button控件,如果要想在鼠添加一个onclick()函数,用来处理按钮的鼠标点击,这个函数调用IMSMap控件的setLevelTextBox3,表示让地图显示第三级的数据;然后给Button控件的click属性赋值为oncick()。<<UserControld:DesignHeight="600"d:DesignWidth="900"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="642">Width="200"HdfName="WhMap"AutoGetMapInfo="True" "Text="输入地图显示级数"VerticalAlignment="Top"/>VerticalAlignment="Top"Width="43"Name="txtLevel"/>Name="setLevel"VerticalAlignment="Top"Width="75"Click="setLevel_Click"/>usingusingnamespace{publicpartialclassSetLevel:{public{}{}}}第42Button控件,如果要想在鼠(14.2,30.5<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="642">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="setCenter"VerticalAlignment="Top"Width="75"Click="setCenter_Click"/>namespacenamespace{publicpartialclassSetCenter:{public{}privatevoidsetCenter_Click(objectsender,RoutedEventArgs{}}}第5问怎样移动地图至某一位置2Button控件,如果要想在鼠个函数调用IMSMap控件的panTo函数,传入参数为(114.2,30.5),表示让地图居中显示<UserControl<UserControld:DesignHeight="600"d:DesignWidth="900"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="642">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="move"VerticalAlignment="Top"Width="75"Click="move_Click"/>namespacenamespace{publicpartialclassMoveTo:{public{}privatevoidmove_Click(objectsender,RoutedEventArgs{{}}}第6如果想改变地图容器中的地图状态,需要设置图层控件的disy属性,当其值为trueButton控件,如果要想在鼠标点击这个按钮的时候切换瓦片图层的显示状态,需函数通过设置TileLayer控件的disy属来控制瓦片图层显示状态;然后给Button控件的click属性赋值为oncick()。<<UserControld:DesignHeight="600"d:DesignWidth="900"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="642">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/> y"VerticalAlignment="Top"Width="75"Click="dis y_Click"/>namespacenamespace{publicpublicpartialclassLayerState:{public{}privatevoid y_Click(objectsender,RoutedEventArgs{ y= }}}第1问怎样在地图上绘制点2Button控件,如果要想在鼠DrawingType.Point,在绘图结束回调DrawinerCallback里加载一个处理绘制点结束的函数Point_Drawiner;然后,在绘图结束回调函数Point_Drawiner中新建一个IMSCircle对象,设置绘图用的各种属性,再将鼠标单击获得的坐标信息传给点,绘制出点个是作为DrawObj的成员函数;目的是为了可以多次绘制图形,也可以在选择地图上<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="drawPoint"VerticalAlignment="Top"Width="75"Click="drawPoint_Click"/>usingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;namespace{publicpartialclassDrawPoint:{privateGraphicsLayerm_g publicDrawPoint(){}publicvoid { yer=newGraphicsLayer(); }privatevoiddrawPoint_Click(objectsender,RoutedEventArgs{if(m_g }
privatevoid er(GraphicsLayergLayer,IGraphicsgraphics,{pnt.Fill=newSolidColorBrush(Colors.Blue);pnt.Stroke=newSolidColorBrush(Colors.Brown);pnt.StrokeThickness=2;pnt.Radius=0.002; }}}第2问怎样在地图上绘制线2Button控件,如果要想在鼠调DrawinerCallback里加载一个处理绘制点结束的函数BeeLine_Drawiner;然个是作为DrawObj的成员函数;目的是为了可以多次绘制图形,也可以在选择地图上<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="drawBeeLine"VerticalAlignment="Top"Width="75"Click="drawBeeLine_Click"/>Name="drawPolyLine"VerticalAlignment="Top"Width="75"Click="drawPolyLine_Click"/>usingusingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;namespace{publicpartialclassDrawLine:{privateGraphicsLayerm_g publicDrawLine(){}publicvoid { yer=newGraphicsLayer(); }privatevoiddrawBeeLine_Click(objectsender,RoutedEventArgs{if(m_g }privatevoid er(GraphicsLayergLayer,IGraphicsgraphics,{{beeLine.Stroke=newSolidColorBrush(Colors.Cyan);beeLine.StrokeThickness=3;beeLine.Points=logPntArr;beeLine.Flicker(400,3); }privatevoiddrawPolyLine_Click(objectsender,RoutedEventArgs{if(m_g }privatevoid er(GraphicsLayergLayer,IGraphicsgraphics,{polyLine.Stroke=newSolidColorBrush(Colors.Orange);polyLine.StrokeThickness=2;polyLine.Flicker(400,3); }}}第3问怎样在地图上绘制圆<UserControl<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="drawCircle"VerticalAlignment="Top"Width="75"Click="drawCircle_Click"/>usingusingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;namespace{publicpartialclassDrawCircle:{privateGraphicsLayerm_g publicDrawCircle(){}publicvoid { yer=newGraphicsLayer(); }privateprivatevoiddrawCircle_Click(objectsender,RoutedEventArgs{if(m_g }privatevoid er(GraphicsLayergLayer,IGraphicsgraphics,{{circle.Fill=newSolidColorBrush(Colors.Green);circle.Stroke=newSolidColorBrush(Colors.Black);circle.StrokeThickness=2;/*法//circle.CenX=//circle.CenY=//circle.Radius=Math.Sqrt(Math.Pow(logPntArr[0].X-logPntArr[1].X,2)+Math.Pow(logPntArr[0].Y-logPntArr[1].Y,2));//doublers=logPntArr[1].X-/**/circle.Flicker(400,3); }}}}第4问<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="drawRect"VerticalAlignment="Top"Width="75"Click="drawRect_Click"/>usingusingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;namespace{publicpartialclassDrawRect:{privateGraphicsLayerm_g publicDrawRect(){}publicvoid { yer=new }{ }privatevoid er(GraphicsLayergLayer,IGraphicsgraphics,{{rect.Stroke=newSolidColorBrush(Colors.Black);rect.StrokeThickness=2;/*法//rect.EndPoint=/**/rect.Flicker(400,3); }}}}第5问怎样在地图上绘制区象Shape即可填充区。<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="drawPolygon"VerticalAlignment="Top"Width="75"Click="drawPolygon_Click"/>usingusingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;namespace{publicpartialclassDrawPolygon:{privateGraphicsLayerm_g publicDrawPolygon(){}publicvoid { yer=new }privatevoiddrawPolygon_Click(objectsender,RoutedEventArgs{if(m_g }privatevoid er(GraphicsLayergLayer,IGraphicsgraphics,{polygon.Stroke=newSolidColorBrush(Colors.Red);polygon.StrokeThickness=2;polygon.Flicker(400,3); }}}第6问怎样在地图上添加一个点<<UserControldd:DesignHeight="600"d:DesignWidth="800"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="addPoint"VerticalAlignment="Top"Width="75"Click="addPoint_Click"/>usingusingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;namespace{publicpartialclassAddPoint:{privateGraphicsLayerm_g publicAddPoint(){}publicvoid { yer=newGraphicsLayer(); }privatevoidaddPoint_Click(objectsender,RoutedEventArgs{if yer== pnt.Fill=newSolidColorBrush(Colors.Red);pnt.StrokeThickness=2;pnt.CenX=pnt.CenY= }}}第7问怎样在地图上添加一条线2问介绍了怎么在地图上通过鼠标绘制一条线在地图上叠加显示,如果在实际应IMSPolyline对象,然后将已知坐标的点数组List<Point>传给绘图坐标数组Points,再将其(14.2,30.5提示:在地图上添加一个多边形跟添加一条线类似,只需要将IMSPolyline<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="addLine"VerticalAlignment="Top"Width="75"Click="addLine_Click"/>usingusingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;namespace{publicpartialclassAddLine:{privateGraphicsLayerm_g publicAddLine(){}publicvoid { yer=newGraphicsLayer(); }privatevoidaddLine_Click(objectsender,RoutedEventArgs{if(m_g IMSPolylinepolyLine=newpolyLine.Stroke=newpolyLine.StrokeThicknesspolyLine.StrokeThickness=List<Point>logPntArr=newList<Point>();Pointp;p=newPoint(114.18,30.58);polyLine.Flicker(400,3); }}}第8问怎样在地图上添加一个标注点2Button控件,如果要想在鼠后将其传入BitmapImage中。<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="addMark"VerticalAlignment="Top"Width="75"Click="addMark_Click"/>usingusingZDIMS.Drawing;usingZDIMS.Util;usingZDIMS.Event;usingSystem.Windows.Media.Effects;usingnamespace{publicpartialclassAddMark:{publicAddMark(){}publicvoid{m_markLayer=newMarkLayer();}privatevoidaddMark_Click(objectsender,RoutedEventArgs{//IMSPolymericMarkm=new{X=Y={
Width=Height=},{X=Y=EnableDrag=true,//添加一 IMSMarkmark;m_markLayer.EnableMarkHiden=false;m_markLayer.EnablePolymericMark=true;mark=newIMSMark(newImage(){}
Width=Height=mark.X=114.2879;mark.Y= //}}第92Button控件,下面的示例代300)转换为逻辑坐标,然后调用LogicToScreen把得到的逻辑坐标再反转成窗口坐标。<<UserControld:DesignHeight="600"d:DesignWidth="800"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="598">Width="200"HdfName="WhMap"ServerAddress=" AutoGetMapInfo="True"/>Name="coordTransform"VerticalAlignment="Top"Width="75"Click="coordTransform_Click"/>namespacenamespace{publicpartialclassCoordTransform:{public{}{Pointpnt=new+
//"+)+PointscrPnt=newPoint();= //"逻辑转窗口"}}}第1问怎样获取地图文档图层列表3问实现地图文档显示,然后添加一个按钮,在点击该按钮的时候触发获得地图文档的图层数,GetLayerInfo函数获取地图文档中的各个图层名称,然后设置在TextBlock控件中显示。 d:DesignHeight="600"d:DesignWidth="950"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="720">Name="vectorMapDoc1"Width="200" ame="wh"AutoGetMapInfo="True" "/>Name="getLayers"VerticalAlignment="Top"Width="75"Click="getLayers_Click"/><TextBlockHeight="46"HorizontalAlignment="Left"Margin="202,64,0,0"Name="textDis Text="TextBlock"VerticalAlignment="Top"Width="710"Foreground="#FFF2092D"/>usingusingZDIMS.BaseLib;usingZDIMS.Map;usingusingnamespacenamespace{publicpartialclassGetLayers:{publicGetLayers{}/*{stringlayers="地图中有图层:";for(inti=0;i<layCount;{stringlayers+=(aLayer+",");} y.Text=}}}第2参照第二章第3问实现地图文档显示,然后添加一个按钮,在点击该按钮的时候触发onClick函数。在onClick函数中,调用地图文档对象VectorMapDoc的GetMayerInfo函 <<UserControld:DesignHeight="600"d:DesignWidth="950"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="720">Name="vectorMapDoc1"Width="200" ame="wh"AutoGetMapInfo="True" "/>Name="hideLayer0"VerticalAlignment="Top"Width="75"Click="hideLayer0_Click"/>usingusingZDIMS.BaseLib;usingZDIMS.Map;usingnamespace{publicpartialclassHideLayer:{publicHideLayer{}/*privatevoidhideLayer0_Click(objectsender,RoutedEventArgs{ yerInfo(0).LayerStatus=}publicvoidue(object{{}}}第3问怎样获取鼠标当前位置信息3问实现地图文档显示,然后添加一个按钮,在点击该按钮的时候触发MouseEventHandlerIMSMapMouseMoveLogicPnt属性获得鼠标当前的位置信息,然后设置在TextBlock控件中显示。<<UserControld:DesignHeight="600"d:DesignWidth="950"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="720">Name="vectorMapDoc1"Width="200" ame="wh"AutoGetMapInfo="True" "/><TextBlockHeight="46"HorizontalAlignment="Left"Margin="202,64,0,0"Name="textDis Text="TextBlock"VerticalAlignment="Top"Width="710"Foreground="#FFF2092D"/>Name="showCoord"VerticalAlignment="Top"Width="75"Click="showCoord_Click"/>usingusingusingusingnamespace{publicpartialclassShowCoord:{public{}/*添加鼠标移动显示位置坐标 privatevoidshowCoord_Click(objectsender,RoutedEventArgs{}{Pointpt=newpt= y.Text"X="pt.X",Y}}}第4问怎样添加和删除地图鼠标器IMSMap的MouseMove触发;删除地图鼠标只需在添加的一个按钮的onClick函数中移除地图容器IMSMap的MouseMove触发即可。<<UserControldd:DesignHeight="600"d:DesignWidth="950"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="720">Name="vectorMapDoc1"Width="200" ame="wh"AutoGetMapInfo="True" <TextBlockHeight="46"HorizontalAlignment="Left"Margin="202,64,0,0"Name="textDis Text="TextBlock"VerticalAlignment="Top"Width="710"Foreground="#FFF2092D"/>Name="showCoord"VerticalAlignment="Top"Width="75"Click="showCoord_Click"/>Name="hideCoord"VerticalAlignment="Top"Width="75"Click="hideCoord_Click"/>usingusingZDIMS.BaseLib;usingZDIMS.Map;usingnamespace{publicpartialclassMouseEvent:{public{}/*添加鼠标移动显示位置坐标 privatevoidshowCoord_Click(objectsender,RoutedEventArgs{}{{Pointpt=newpt= y.Text"X="pt.X",Y}/*privatevoidhideCoord_Click(objectsender,RoutedEventArgs{}}}第5问参照第二章第3问实现地图文档显示,然后添加一个按钮,在点击该按钮的时候触发MouseButtonEventHandlerGraphicsLayerDrawingTypePointDrawingEventHandlerGetPntGetPnt中获得鼠标点击的坐标信息,然后设置在TextBlock控件中显示。TextBlock控件中显示(见被注释的部分;但是<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="720">Name="vectorMapDoc1"Width="200" ame="wh"AutoGetMapInfo="True" "/><TextBlockHeight="46"HorizontalAlignment="Left"Margin="202,64,0,0"Name="textDis Text="TextBlock"VerticalAlignment="Top"Width="710"Foreground="#FFF2092D"/>Name="getPoint"VerticalAlignment="Top"Width="75"Click="getPoint_Click"/>usingusingZDIMS.BaseLib;usingZDIMS.Map;usingnamespace{publicpartialclassGetPoint:{privateGraphicsLayerm_g publicGetPoint(){ yer=newGraphicsLayer(){EnableGPUMode=true}; }/*privatevoidgetPoint_Click(objectsender,RoutedEventArgs{ =}{//Pointpt=new//pt= y.Text="鼠标点击选中的位置X="+pt.X+",Y="+pt.Y; yer.DrawingType=DrawingType.Point; }publicvoidGetPnt(GraphicsLayergLayer,IGraphicsgraphics,List<Point>{{Dot_2Ddot=newDot_2D();dotx=logPntArr[0].X;dot.y=logPntArr[0].Y; y.Text"X="dot.x"Y="}}}}第6问参照第二章第3问实现地图文档显示,然后添加一个按钮,在点击该按钮的时候触发MouseButtonEventHandlerGraphicsLayerDrawingType获得绘制这条线的一系列点的坐标信息,然后设置在TextBlock控件中显示。<<UserControld:DesignHeight="600"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="720">Name="vectorMapDoc1"Width="200" ame="wh"AutoGetMapInfo="True" <TextBlockHeight="46"HorizontalAlignment="Left"Margin="202,64,0,0"Name="textDis Text="TextBlock"VerticalAlignment="Top"Width="710"Foreground="#FFF2092D"/>Name="getLine"VerticalAlignment="Top"Width="75"Click="getLine_Click"/>usingusingZDIMS.BaseLib;usingZDIMS.Map;usingnamespace{publicpartialclassGetLine:{privateGraphicsLayerm_g publicGetLine(){ yer=newGraphicsLayer(){EnableGPUMode=true}; }/*privatevoidgetLine_Click(objectsender,RoutedEventArgs{ =}{yer.DrawingType=}publicvoidGetPLine(GraphicsLayergLayer,IGraphicsgraphics,List<Point>{{{ =TextWrap y.Text="线上的点序列:";for(inti=0;i<logPntArr.Count;{ logPntArr[i].Y.ToString("0.00")+")";}}}}}第7问怎样用鼠标获取一个矩形参照第二章第3问实现地图文档显示,然后添加一个按钮,在点击该按钮的时候触发MouseButtonEventHandlerGraphicsLayerDrawingTypeRectangleDrawingEventHandlerGetRectGetRect中获得矩形左下角和右上角的坐标信息,然后设置在TextBlock控件中显示。<<UserControld:DesignHeight="600"d:DesignWidth="950"<Gridx:Name="LayoutRoot"Name="iMSMap1"VerticalAlignment="Top"Width="720">Name="vectorMapDoc1"Width="200" <TextBlockHeight="46"HorizontalAlignment="Left"Margin="202,64,0,0"Name="textDis Text="TextBlock"VerticalAlignment="Top"Width="710"Foreground="#FFF2092D"/>Name="getRect"VerticalAlignment="Top"Width="75"Click="getRect_Click"/>usingusingZDIMS.BaseLib;usingZDIMS.Map;usingnamespace{publicpartialclassGetRectangle:{privateGraphicsLayerm_g publicGetRectangle(){ yer=newGraphicsLayer(){EnableGPUMode=true}; }/*privatevoidgetRect_Click(objectsender,RoutedEventArgs{ =}{yer.DrawingType=}publicvoidGetRect(GraphicsLayergLayer,IGraphicsgraphics,List<Point>{{{ZDIMS.BaseLib.RectrectnewZDIMS.BaseLib.Rect();rectxmin=Math.Min(logPntArr[0].X,logPntArr[1].X);rectxmaxMath.Max(logPntArr[0].X,logPntArr[1].X);rect.ymin=Math.Min(logPntArr[0].Y,logPntArr[1].Y);rect.ymaxMath.Max(logPntArr[0].Y,logPntArr[1].Y); y.Text="矩形范围:"; y.Text+="("+rect.xmin.ToString("0.000")+","++ y.Text+="("+rectxmax.ToString("0.000")+","+rect.ymax.ToString("0.000")+")"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人支出月度计划表
- 大健康产业创新发展模式研究与实践
- 钢平台安全施工方案
- 跨部门协作事务处理指南与文书流程
- 汽车后市场智能化服务解决方案
- 三农村电子商务发展模式研究方案
- 初级母婴护理师考试复习测试卷
- 妇产科护理练习试题及答案(一)
- 法律实务案例解析知识题
- 城市绿化与生态保护方案
- 基于单片机的电子广告牌设计
- 应用PDCA管理工具提高病案归档率
- 果蔬自发气调包装原理与应用演示文稿
- DB43T 2428-2022 水利工程管理与保护范围划定技术规范
- SB/T 11016-2013足部保健按摩服务规范
- GB/T 4062-2013三氧化二锑
- 神经系统的结构与神经调节的基本方式 【知识精讲+高效备课】 高考生物一轮复习 (新教材)
- GB/T 15328-2019普通V带疲劳试验方法无扭矩法
- 马克思主义基本原理(完整版)
- 涉密人员脱密期管理制度
- 企业风险管理-战略与绩效整合(中文版)
评论
0/150
提交评论