1 简单的地图展示

ArcGISRunTime 的平面地图展示主要依赖MapView这个控件,MapView是地图的容器,Map主要是图层的集合

(注:三维场景的显示主要依赖SceneView这个控件)

  1. <esri:MapView x:Name="MyMapView" WrapAround="True">
  2. <esri:Map >
  3. <esri:ArcGISTiledMapServiceLayer
  4. ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
  5. </esri:Map>
  6. </esri:MapView>

简单的地图显示就已经OK了,但是此时我想展示某个地方的地图,也就是说我不想一上来就展示世界地图,好,接着看下面

2 设置初始视角及范围

(1)分别设置最小点的最大点的坐标即可

  1. <esri:MapView x:Name="MyMapView" WrapAround="True">
  2. <esri:Map >
  3. <esri:Map.InitialViewpoint>
  4. <esri:ViewpointExtent XMin="104.082686" YMin="30.695853" XMax="104.382686" YMax="30.718530" SpatialReferenceID="4326" />
  5. </esri:Map.InitialViewpoint>
  6. <esri:ArcGISTiledMapServiceLayer
  7. ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
  8. </esri:Map>
  9. </esri:MapView>

注:SpatialReferenceID="4326" 4326是WGS 84投影的代号

3我想要达到如图这种自定义控件跟着我的地理坐标实时互动统一应该怎么做呢

正确姿势:使用OverlayItemsControl ,然后利用MapView.ViewOverlayAnchor 指定UI控件(如Grid)在地图上的定位锚点(地理位置)

4经向环绕

平面地图都是从经度-180展开到180,如果你要同时浏览东西经180的数据就很不方便,因此在v1.8中新增加了经向环绕“Wrap Around”的设置,使得地图数据在东西向平移时无缝环绕。

  1. <esri:MapView x:Name="mapStreets" WrapAround="True">
  2. <esri:Map>
  3. <esri:ArcGISTiledMapServiceLayer
  4. ServiceUri="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
  5. </esri:Map>
  6. </esri:MapView>

但是由于设置了经向环绕,所以从屏幕获得的坐标要经过标准化normalize

Geometry Engine里提供了该方法normalizeCentralMeridian

  1. var normalizedPoint = GeometryEngine.NormalizeCentralMeridian(e.Location);
  2. var projectedCenter = GeometryEngine.Project(normalizedPoint, SpatialReferences.Wgs84) as MapPoint;

当然如果你考虑最大范围覆盖全球或者投影支持Wgs84以及Web Mercator 你可以考虑添加经向环绕

5 以上的地图都是加载网上的地图,能不能加载本地的数据呢?

答案当然是可以的,ArcGIS RunTime支持从本地读取Shapefile  Geodatabase

那么最后能不能以服务的形式加载本地数据呢?这个也是可以的

不过官方会提示你仅供开发调试使用

  1. LocalMapService localMapService = new LocalMapService(@"\maps\xx.mpk");
  2. await localMapService.StartAsync();
  3. ArcGISDynamicMapServiceLayer arcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer()
  4. {
  5. ID = "arcGISDynamicMapServiceLayer",
  6. ServiceUri = localMapService.UrlMapService,
  7. };
  8. MyMapView.Map.Layers.Add(arcGISDynamicMapServiceLayer);

类比要素服务也可以在本地被创建这种以访问本地服务的方式访问本地数据与远程服务并没有太大差异

ArcGIS RunTime Sdk +WPF 基础地图显示的更多相关文章

  1. ArcGIS Runtime SDK for WPF已不更新,后续将被ArcGIS Runtime SDK for .NET取代

    ArcGIS Runtime SDK 10.2.5 for WPF is now available! by mbranscomb and Rex Hansen on January 27, 2015 ...

  2. ArcGIS runtime sdk for wpf 授权

    这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...

  3. ArcGIS Runtime SDK for WPF之SimpleRenderer无法添加、报错“图形符号无法序列化为 JSON”

    ArcGIS Runtime SDK for WPF之SimpleRenderer无法添加.报错“图形符号无法序列化为 JSON” 在上一篇博文中如果在 esri:Map 里面是否设置了的UseAcc ...

  4. ArcGIS Runtime SDK for WPF 初始化

    安装包 管理nuget包 Esri.ArcGISRuntime.WPF 也许还需要 Esri.ArcGISRuntime.Hydrography Esri.ArcGISRuntime.LocalSer ...

  5. ArcGIS Runtime SDK for WPF学习笔记(一)

    本节主要讲解如何安装ArcGIS Runtime SDK,以及移除注释与水印. 附上ArcGIS Runtime SDK for .NET的官方操作手册网址:https://developers.ar ...

  6. 《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述

    1.前言 ArcGIS Runtime SDK是一整套用于构建原生及跨平台的地图应用程序的开发包,包括移动设备的Android.iOS.Windows Phone,针对桌面的.Net.Java.OSX ...

  7. 《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView

    1.前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版预 ...

  8. ArcGIS Runtime SDK for Android 授权(arcgis android 去除水印)

    ArcGIS Runtime SDK for Android 授权 ESRI中国北京 要下载和安装 ArcGIS Runtime SDK for Android,您需要注册开发者账户,进而便拥有了访问 ...

  9. ArcGIS runtime for wpf 部署

    简介 ArcGIS runtime for wpf 是一个轻量级的产品,部署方便,甚至可以做到直接部署在U盘中,做到即插即用. 部署一般需要遵循如下几个步骤: 1. 设定部署许可 虽然ArcGIS r ...

随机推荐

  1. [UOJ391] 鸽举选仕

    我把这题推荐给yyb让他把这题做它的T2他竟然不要QwQ....... 题目大意: 下发八个题目和对应的八份代码,请构造数据Hack下发代码. Task1 下发代码用了一些神奇做法实现A + B = ...

  2. Linux中的防火墙----iptables

    防火墙,它是一种位于内部网络与外部网络之间的网络安全系统.一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过. 防火墙根据主要的功能可分为网络层防火墙.应用层防火墙.数据库防火墙. 网 ...

  3. 【BZOJ3675】【Apio2014】序列分割

    Description 传送门 Solution ​ 之前我也遇到过一次这种"两段之和乘积作为贡献"的问题:考虑把这一种\((\sum) *(\sum)\)的形式拆括号,就可以发现 ...

  4. nodejs调用脚本(python/shell)和系统命令

    每种语言都有自己的优势,互相结合起来各取所长程序执行起来效率更高或者说哪种实现方式较简单就用哪个,nodejs是利用子进程来调用系统命令或者文件,文档见http://nodejs.org/api/ch ...

  5. C++统一初始化

    .C++中指定初始化值的方式有4种方式: ()小括号 ); ()等号 ; ()大括号 }; ()等号和大括号 }; .C++11统一初始化, 即使用大括号初始化方式, 其使用场景主要有以下3种: () ...

  6. Rstudio常用快捷键

    多行注释 ctrl+shift+c 运行单行或选中代码 ctrl+enter 查看帮助 F1

  7. Git5:Git操作远程仓库

    目录 说明 一.git clone 二.git remote 三.git fetch 四.git pull 五.git push 说明 Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个 ...

  8. OpenStack 认证服务 KeyStone连接和用户管理(四)

    连接keystone两种方式: 一种使用命令 一种使用环境变量 1.通过环境变量方式连接keystone(适合在初始化场景使用) 配置认证令牌环境变量 export OS_TOKEN=07081849 ...

  9. iis配置访问错误

    最近换工作,忙着熟悉新的环境,新的框架技术(银行用的EBF),各种碰坑. 总结一下iis配置过程当中遇到的一个坑------ 按照环境搭配手册一步一步的配置,在我机器上访问一直报500的错,但是同样的 ...

  10. Spring.profile实现开发、测试和生产环境的配置和切换

    软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等.为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spri ...