ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等(一)

ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等(一),第1张

概述平台:Vs 2010,Blend 4,Silverlight 4 调用API: ArcGis for Silverligth API(ESRI.ArcGIS.Client)   前言:本想只写一篇知识性的简单介绍下 ArcGis API,后来发觉程序做的比较复杂,不是一两篇能搞定的为了让大家能更深入的了解 ArcGis API 干脆写一个连载长篇的!写的不好请大家批评指正!   好了不说废话少说了

平台:Vs 2010,Blend 4,Silverlight 4

调用API: ArcGis for Silverligth API(ESRI.ArcGIS.ClIEnt)

 

前言:本想只写一篇知识性的简单介绍下 ArcGis API,后来发觉程序做的比较复杂,不是一两篇能搞定的为了让大家能更深入的了解 ArcGis API 干脆写一个连载长篇的!写的不好请大家批评指正!

 

好了不说废话少说了!国际惯例先上图吧!图上实现的功能我会在后面章节中讲解!

 

 

项目准备:ArcGis API(自己找地址吧),我用的ESRI.ArcGIS.ClIEnt是1.1.0.97的版本。其它版本也应该差不多!

 

好了我们先建个网站项目,然后建个silverlight项目,把ArcGis API 添加到项目中

 

我们先把地图加到silverlight中


Xmal中代码:


  <UserControl         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"         xmlns:d="http://schemas.microsoft.com/Expression/blend/2008"           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"           mc:Ignorable="d" xmlns:esri="clr-namespace:ESRI.ArcGIS.ClIEnt;assembly=ESRI.ArcGIS.ClIEnt"         xmlns:esriBehaviors="clr-namespace:ESRI.ArcGIS.ClIEnt.Behaviors;assembly=ESRI.ArcGIS.ClIEnt.Behaviors"         xmlns:i="clr-namespace:System.windows.Interactivity;assembly=System.windows.Interactivity"         xmlns:ic="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"         xmlns:System="clr-namespace:System;assembly=mscorlib"         xmlns:data="clr-namespace:System.windows.Controls;assembly=System.windows.Controls.Data"         xmlns:esriConverters="clr-namespace:ESRI.ArcGIS.ClIEnt.ValueConverters;assembly=ESRI.ArcGIS.ClIEnt"         xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.ClIEnt.Symbols;assembly=ESRI.ArcGIS.ClIEnt"         d:DesignWIDth="1024" d:DesignHeight="768" x:Class="typhoonSL.MainPage">               <GrID x:name="LayoutRoot">                           <!--Gis 地图-->             <esri:Map x:name="myMap" Extent="117.356,29.4949,124.299,32.567">             </esri:Map>          </GrID>                

 

 我的xmlns引用中多了 Behaviors和一些其它的,这些以后用到的时候我会讲解的


我们先看一下在地图上如何绘制点

调用就在 MainPage() 程序初始化的时候 LoadCity("City.xml");

记得把 City.xml放在Silverlight 项目里

     /// <summary>             /// 载入地图点信息,我们从 Xml 文件中读取点信息,同样可以从外部来获取              /// </summary>             /// <param name="filename">要载入的文件名称</param>             private voID LoadCity(string filename)              {            // 这里这个 CityModel 自己定义吧,下面有 City.xml 那个类                  List<typhoonSL.Model.CityModel> citys = new List<typhoonSL.Model.CityModel>();                  CityModel temp = new CityModel();                  StreamResourceInfo r = Application.GetResourceStream(new Uri(filename, UriKind.relative));                  XmlReader reader = XmlReader.Create(r.Stream);                       while (reader.Read())                  {                      if (reader.AttributeCount == 5)                      {                          temp = new CityModel();                          temp.ID = Convert.ToInt32(reader.GetAttribute(0));                          temp.Cityname = reader.GetAttribute(1);                          temp.Level = Convert.ToInt32(reader.GetAttribute(2));                          temp.Longitude = Convert.Todouble(reader.GetAttribute(3));                          temp.Latitude = Convert.Todouble(reader.GetAttribute(4));                          citys.Add(temp);                      }                  }                       List<Graphic> g = new List<Graphic>();                       int length = citys.Count;                  for (int i = 0; i < length; i++)                  {                      g.Add(new Graphic()                      {                          Geometry = new MapPoint(citys[i].Longitude - 0.1, citys[i].Latitude-0.1),                         Symbol = new TextSymbol() { Text = citys[i].Cityname, FontSize = 12Foreground = new SolIDcolorBrush(colors.Black) }                      });                      g.Add(new Graphic()                       {                          Geometry = new MapPoint(citys[i].Longitude, citys[i].Latitude),                         Symbol = new SimpleMarkerSymbol() { color = new SolIDcolorBrush(colors.Orange) ,Size = 10,Style = SimpleMarkerSymbol.SimpleMarkerStyle.Circle}                      });                      g[i].MouseEnter += new MouseEventHandler(City_MouseEnter);                      g[i].MouseLeave += new MouseEventHandler(City_MouseLeave);                  }                       Graphicslayer layer = new Graphicslayer();                  layer.ID = "CityInfo";                       int layerCount = myMap.Layers.Count;                  for (int i = 0; i < layerCount; i++)                  {                      if (myMap.Layers[i].ID == "CityInfo")                      {                          myMap.Layers.RemoveAt(i);                          break;                      }                  }                       GisMap.DrawAllLayers(myMap, new Graphicslayer[] { layer }, g);                  GisMap.AddLayersToMap(myMap, new Graphicslayer[] { layer });                   }   

 

GisMap 类中的两个方法

 

     /// <summary>              /// 加载所有图层上的点              /// 画所有点              /// 图层和点的对应关系要正确              /// 有几个图层就要有几个点集合              /// </summary>              /// <param name="map">ArcGis 地图变量</param>              /// <param name="layers">GraphicLayer 层数组</param>              /// <param name="graphicParam">Graphic 点数组</param>              public static voID DrawAllLayers(Map map, Graphicslayer[] layers, params List<Graphic>[] graphicParam)              {                  // 计算要绘制的层数并一层一层的绘制(调用动态绘制方法)                  if (layers != null)                  {                      int length = layers.Length;                      for (int i = 0; i < length; i++)                      {                          if (layers[i] == null)                          {                              layers[i] = new Graphicslayer();                          }                          DrawAllGraphics(layers[i], graphicParam[i]);                      }                  }              }                        /// <summary>              /// 将图层数组全部添加到 map 中              /// </summary>              /// <param name="map">表示一张 ArcGis 地图</param>              /// <param name="layers">表示地图层的数组</param>              public static voID AddLayersToMap(Map map, Graphicslayer[] layers)              {                  // 逐个将数据添加到当前地图中                  foreach (Graphicslayer item in layers)                  {                      if (item != null)                      {                          map.Layers.Add(item);                      }                  }              }   

 

City.xml 文件

@H_403_1290@
      <?xml version="1.0" enCoding="utf-8" ?>         <s>           <l ID="101230101" Cityname="福州" Level="1" Longitude="119.301389" Latitude="25.93038" />           <l ID="101300101" Cityname="南宁" Level="1" Longitude="108.272078" Latitude="22.64439" />           <l ID="101250101" Cityname="长沙" Level="1" Longitude="112.921854" Latitude="28.07634" />           <l ID="101260101" Cityname="贵阳" Level="1" Longitude="106.715264" Latitude="26.40347" />           <l ID="101270101" Cityname="成都" Level="1" Longitude="104.072857" Latitude="30.49511" />           <l ID="101280101" Cityname="广州" Level="1" Longitude="113.291693" Latitude="22.96442" />           <l ID="101290101" Cityname="昆明" Level="1" Longitude="102.704315" Latitude="24.86215" />         </s>       
 

今天写的比较忙!明天再来更新吧!以上都是简单的介绍,后面我会加一些实用的功能进去的!

 

感觉时间不多写的不是太好啊!郁闷~~~已经努力了!有空我多改改吧!

 

转自:http://www.cnblogs.com/Royal_WH/archive/2010/11/02/1867366.HTML

总结

以上是内存溢出为你收集整理的ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等(一)全部内容,希望文章能够帮你解决ArcGis For Silverlight API,地图显示Gis,绘制点,线,绘制图等(一)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存