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. BZOJ4919 [Lydsy1706月赛]大根堆 【dp + 启发式合并】

    题目链接 BZOJ4919 题解 链上的\(LIS\)维护一个数组\(f[i]\)表示长度为\(i\)的\(LIS\)最小的结尾大小 我们可以用\(multiset\)来维护这个数组,子树互不影响,启 ...

  2. Java之字节数组和字符串的转换问题

    今天在使用字节流复制图片的时候发现一个问题,就是将字节数组转化为字符串的时候会出现长度不同的问题.这其实是个错误的操作. public static void main(String[] args) ...

  3. Java之IO流(字节流,字符流)

    IO流和Properties IO流 IO流是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键, 因而所有 I/O 的主体实际上是内置在操作系统中的.单独的 ...

  4. 我的第一个activiti实例 (代码方式) ctiviti入门列子一个简单的activiti请假流程

    转: (activiti入门列子一个简单的activiti请假流程) 我的第一个activiti实例 2017年05月31日 14:29:45 chf_mixueer 阅读数:1223   整个项目的 ...

  5. python 获取本机 IP

    原文 通过 UDP 获取本机 IP,目前见过最优雅的方法 这个方法是目前见过最优雅获取本机服务器的IP方法了.没有任何的依赖,也没有去猜测机器上的网络设备信息. 而且是利用 UDP 协议来实现的,生成 ...

  6. 在VC6/VC2005下使程序直接具有XP风格(XP Style):

    原文 首先将以下文本保存为XpStyle.mainfest(后经实践,文件名和后缀是什么都无所谓) <?xml version="1.0" encoding="UT ...

  7. 科学计算三维可视化---TVTK库可视化实例

    一:TVTK库可视化实例 Plot3D文件知识:PLOT3D 数据格式 PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件).网 ...

  8. codves 2021中庸之道

    2021 中庸之道 http://codevs.cn/problem/2021/ 题目描述 Description 给定一个长度为N的序列,有Q次询问,每次询问区间[L,R]的中位数. 数据保证序列中 ...

  9. 如何利用mount命令挂载另一台服务器上的目录

    文件服务器(被挂载机):192.168.1.100 操作机(挂载到机):192.168.1.200 也就是说,你在操作机上进行的操作,实际上都到文件服务器上去了: 1. 开启NFS服务: 在文件服务器 ...

  10. java抽象类和普通类的区别

    1.抽象类不能被实例化. 2.抽象类可以有构造函数,被继承时子类必须继承父类一个构造方法,抽象方法不能被声明为静态. 3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体 4.含有抽象方法 ...