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. 为什么有时候访问某些加密https网站是不需要证书的? https? ssl?

    根证书是CA颁发给自己的证书, 是信任链的起点 1.所有访问https的网站都是需要证书的. 2.对于某些网站,尤其是证书颁发机构的网站,操作系统自动添加了这些网站访问需要的证书到证书管理器中,所以就 ...

  2. Longest Word in Dictionary through Deleting - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Longest Word in Dictionary through Deleting - LeetCode 注意点 长度一样的字符串要按字典序返回较小的 ...

  3. 使用IPMI控制/监控Linux服务器

    1       IPMI简述 IPMI提供了很多丰富功能,我使用的功能,说得大白话一点,就是: 1.获取本设备的硬件信息:包括CPU和主板的温度.电压.风扇转速. 2.在设备A上,通过命令,控制远程设 ...

  4. 解题:POI 2013 Triumphal arch

    题面 二分答案,问题就转化为了一个可行性问题,因为我们不知道国王会往哪里走,所以我们要在所有他可能走到的点建造,考虑用树形DP解决(这个DP还是比较好写的,你看我这个不会DP的人都能写出来=.=) 定 ...

  5. Spring MVC使用Cors实现跨域

    在开发APP过程中,APP调用后端接口有跨域的问题,只要在spring-mvc.xml 文件中加入下面的配置即可: <!-- 解决API接口跨域问题配置 Spring MVC 版本必须是 4.2 ...

  6. 【位运算】判断一个数是否为2的n次方

    import java.util.Scanner; /** * 功能:用位运算,判断一个数是否为2的n次方. * 思路:用1做移位操作,然后判断移位后的值是否与给定的数相同. */ public cl ...

  7. HDU 6231

    K-th Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tot ...

  8. poj 2774 后缀数组 两个字符串的最长公共子串

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 31904   Accepted: 12 ...

  9. nginx反向代理下载文件失败处理

    最近遇到了客户在从我们的服务器下载文件失败时的情况.然后把解决方案一并整理一下以备后续.需要说明的是,我们前端都是使用nginx来做反向代理,后面的逻辑处理采用php的方式. 1.缓存目录不可写 ng ...

  10. C#委托Code

    class Program { delegate double ProcessDelegate(double param1, double param2); static double Multipl ...