在ArcGIS API for Silverlight/WPF中原版的TextSymbol只能支持文字正向显示。在很多实际项目中,往往需要文字标注有一些角度甚至是沿线标注,下面我们来看一下原装的TextSymbol和扩展后的TextSymbol的比较和实现思路。
要实现右图的效果只需要从TextSymbol继承一个Symbol并增加Rotation属性,并加载相应的控件模板就行了。
以下是控件模板的代码:
<ControlTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:esri="http://schemas.esri.com/arcgis/client/2009"
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows">
<TextBlock Text="{Binding Symbol.Text}"
FontFamily="{Binding Symbol.FontFamily}"
FontSize="{Binding Symbol.FontSize}"
Foreground="{Binding Symbol.Foreground}">
<TextBlock.RenderTransform>
<CompositeTransform Rotation="{Binding Symbol.TextRotation}"/>
</TextBlock.RenderTransform>
</TextBlock>
</ControlTemplate>
控件模板中需要绑定对象中的文本、字体、字号、颜色、角度五个属性。
对象类的加载XAML代码如下:
base.ControlTemplate = XamlReader.Load(LoadXaml("LabelSymbol.xaml")) as ControlTemplate;
public static string LoadXaml(string FileName)
{
string xamlstring;
var assemblyName = new AssemblyName(Assembly.GetExecutingAssembly().FullName);
string CurrentAssemblyName = assemblyName.Name;
string resourceName = string.Format("{0};component{1}{2}", CurrentAssemblyName, "/", FileName);
Uri uri = new Uri(resourceName, UriKind.Relative);
StreamResourceInfo streamResourceInfo = Application.GetResourceStream(uri);
using (Stream resourceStream = streamResourceInfo.Stream)
{
using (StreamReader streamReader = new StreamReader(resourceStream))
{
xamlstring = streamReader.ReadToEnd();
}
}
return xamlstring;
}
对象类中再定义对应的五个属性就能实现有倾斜角度的标注了。最终实现效果如图:
后话:
这个扩展的Symbol仅仅是对文字符号增加旋转角度,其中还有不完善的地方,在线路转角的地方标注的时候往往会与线交叉,如:
如果再深入完善一下,稍做修改可以将标注做成真正的沿线标注,如:
沿线文本在网上有大量的资料,在这里就不再啰嗦了,希望本文对各位ArcGIS API for Silverlight开发人员有帮助。
分享到:
相关推荐
ArcGIS SilverLight/WPF API 2.0版本已正式发布,新特性包括: 1、使用2.0开发应用必须基于SL4.0,不再支持SL3.0版本。 2、构建SL4.0版本的应用必须使用Visual Studio 2010 和 Expression Blend 4 。 3、支持...
ArcGIS API for Silverlight 3.0
ArcGIS API FOR silverlight
arcgis api 3.x for js 解决 textSymbol 文本换行显示源码,arcgis api 3.x for js 默认加载 textsymbol 显示文本是不支持换行的,识别不到 \n \r 等等转义符,需要拓展一下才能支持。 适合对象:webgis初学者以及...
arcgis api for silverlight 3.0版本,好用
此应用实例是一个全功能的展示应用。运行调试通过,共享出来,大家参考、...实例充分利用的Silverlight 3的功能,比如:触发器、元件结合等,程序结构合理,实例开发了一系列的用户控件来构建应用,可复用性较强....
ArcGIS API for Silverlight 开发入门教程,讲解API的相关使用!
ArcGIS API 3.3 for Silverlight
ArcGIS API for JavaScript 4.x 基础之绘制点、线、面、标注、图片的完整代码;
目前最新的api for silverlight 版本,供学习使用。
Map.Layers是一个集合,可以往里面添加layer,这里的layer指的是ArcGIS Server或其他软件发布的地图服务,目前SilverlightAPI中支持的能够直接使用的有ArcGISDynamicMapServiceLayer,ArcGISTiledMapServiceLayer,...
ArcGIS API for Silverlight开发入门
ArcGIS API for Silverlight 3.2安装文件,现在ESRI官网上,Global账户已经无法下载使用,只能使用Developer账户下载。
ArcGIS API for Silverlight help
arcgis api for wpf 2.4 sdk包 最新示例 demo ArcGIS API允许您在应用程序中集成交互式地图和任务。例如,你可以这样做: 创建包含数据的映射 在ArcGIS Online或Bing Maps basemap上显示您的数据 交互式地向地图添加...
ArcGIS API for Silverlight开发入门