ArcGIS Runtime API for .NET——Maps (2D)

ArcGIS Runtime API for .NET——Maps (2D)


  地图和场景提供了地理数据的交互式显示,使您可以可视化和探索模式,回答问题并分享见解。 可以在ArcGIS系统及其他系统中打开,编辑和共享它们。 地图设计用于二维(2D)的交互,而场景设计用于三维(3D)的交互。 有关使用场景的更多信息,请参见本指南中的 场景(3D)

你可以使用地图来:
  显示底图图层,例如街道或卫星图像。
  基于文件或服务访问和显示数据层,包括您创作的数据。
  提供临时点,线,多边形或显示为图形的文本的上下文。
  检查数据层并显示来自属性的信息。
  测量距离并探索几何之间的空间关系。
  将图层集合另存为网络地图,以在整个ArcGIS平台上共享。

一.地图的运作方式

  地图与地图视图配合使用,可以二维显示地理内容。 地图包含一个图层集合,其中包括来自在线或本地来源的多个数据图层,以及一个提供地理环境的底图图层。 地图还可以包含用于搜索地址或地名的数据集,用于求解路线的网络,用于跟踪水和电等服务流的公用事业网络以及非空间表。 可以使用ArcGIS Runtime创建,显示,编辑和保存地图。 由于格式基于ArcGIS Web地图标准,因此这些地图可以在ArcGIS系统中统一共享。
  对于离线工作流程(当您没有网络连接时),您可以打开存储在移动地图包中的地图。 可以使用ArcGIS Pro,ArcGIS Enterprise或ArcGIS Online创建移动地图包。 有关使用ArcGIS Runtime实施离线工作流的更多信息,请参见离线地图,场景和数据

二.地图

  地图包含按添加顺序显示的图层集合,最近添加的图层显示在现有图层上方。 您可以使用地图更改图层的显示顺序以及控制可见的图层,并使用用户界面控件(如列表,复选框或开关)公开此功能。 地图还包含书签的集合,类似于网络浏览器的书签,书签使您可以快速导航到地图的预定义区域。
  您可以打开现有地图,也可以完全使用代码创建一个地图。 要创建地图,通常首先要添加底图图层,然后再添加一个或多个数据图层。

Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.ApiKey = "YOUR_API_KEY";
var map = new Map(BasemapStyle.ArcGISNavigation);

你还可以使用其URL打开存储在门户网站(例如ArcGIS Online)中的地图。

Map webMap = new Map(new Uri("https://www.arcgis.com/home/item.html?id=acc027394bc84c2fb04d1ed317aac674"));

可以通过设置Map.InitialViewpoint属性来定义地图显示的初始范围。

三.图层

  地图中的每个图层都引用来自在线服务或本地数据集的地理数据。 可以将不同类型的图层添加到地图,每个图层都设计为显示特定类型的数据。 一些图层显示图像,例如卫星图像或航空摄影,而另一些图层则由一组要素组成,这些要素使用点,线或面的几何形状表示真实世界的实体。 除几何图形外,要素还具有提供有关其表示的实体的详细信息的属性。
  Layer类是ArcGIS Runtime API for .NET中使用的所有类型的层的基类。 您创建的图层类型取决于您要显示的数据类型。 例如,要显示要素数据,您可以创建一个FeatureLayer,该FeatureLayer引用在线服务(例如要素服务)或受支持的本地数据集。

Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.ApiKey = "YOUR_API_KEY";
var map = new Map(BasemapStyle.ArcGISTopographic);
var trailheadsTable = new ServiceFeatureTable(new Uri("https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trailheads_Styled/FeatureServer/0"));
var trailsTable = new ServiceFeatureTable(new Uri("https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Trails_Styled/FeatureServer/0"));
var openSpacesTable = new ServiceFeatureTable(new Uri("https://services3.arcgis.com/GVgbJbqm8hXASVYi/arcgis/rest/services/Parks_and_Open_Space_Styled/FeatureServer/0"));
map.OperationalLayers.Add(new FeatureLayer(trailheadsTable));
map.OperationalLayers.Add(new FeatureLayer(trailsTable));
map.OperationalLayers.Add(new FeatureLayer(openSpacesTable));
MainMapView.Map = map;

四.地图视图

  地图视图是一种用户界面控件,在应用中显示一张地图。它包含内置功能,使用户可以通过放大和缩小,重新设置地图显示或获取有关地图中元素的其他信息。它还管理一个或多个图形叠加集合中的图形。地图视图管理的图形始终显示在地图上显示的所有图层上方。

地图视图控件还允许您执行以下操作:

  访问数据层和图形的数据。
  在地图上将当前位置显示为点。
  在指定位置识别并选择功能。
  导出当前显示的图像。
  旋转地图显示。
  应用时间范围来过滤要素的显示。
  使用属性和空间条件过滤图层数据。
  通过将地图添加到MapView控件来显示地图。对地图所做的更改(例如添加,删除或重新排序图层)将立即反映在地图视图显示中。 Map.InitialViewpoint属性将确定加载地图时显示的地图区域。还可以使用和以编程方式更改显示屏中显示的地图区域或方向。

MapView mapView = new MapView();
mapView.Map = map;
mapView.SetViewpointCenterAsync(latitude: 34.027,
                                longitude: -118.805,
                                scale: 72223.819286);

五.示例:

创建并显示地图
  可以通过创建一个带有底图图层的基本地图,设置其初始范围并将其添加到地图视图中来显示基本地图。 若要了解如何添加其他数据,请参见“图层”主题。
步骤:
  创建一个新的Map,将BasemapStyle传递到构造函数中。
  (可选)将一个或多个数据层添加到地图。
  将地图分配给应用中的MapView控件。
  将地图视图“视点”设置为聚焦于地图的指定区域。

using Esri.ArcGISRuntime.UI.Controls;
using Esri.ArcGISRuntime.Mapping;
using System.Windows;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.ApiKey = "YOUR_API_KEY";

        MainMapView.Map = new Map(BasemapStyle.ArcGISNavigation);

        MainMapView.SetViewpoint(new Viewpoint(
            latitude: 34.027,
            longitude: -118.805,
            scale: 72223.819286));

    }
}

在地图视图上设置视点
  加载窗口时,为地图视图设置视点。 该视点定义了一个点和地图比例尺,以显示为中心,沿着加利福尼亚南部海岸的圣莫尼卡山脉。
  打开MainWindow.xaml.cs。 添加代码,其中包含与MainWindow.xaml和它定义的用户界面元素关联的代码。
  添加新的必需用法:

//   Copyright 2021 Esri
//   Licensed under the Apache License, Version 2.0 (the "License");
//   you may not use this file except in compliance with the License.
//   You may obtain a copy of the License at
//
//   https://www.apache.org/licenses/LICENSE-2.0
//
//   Unless required by applicable law or agreed to in writing, software
//   distributed under the License is distributed on an "AS IS" BASIS,
//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//   See the License for the specific language governing permissions and
//   limitations under the License.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;

namespace DisplayAMap
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();

            MapPoint mapCenterPoint = new MapPoint(-118.805, 34.027, SpatialReferences.Wgs84);
            MainMapView.SetViewpoint(new Viewpoint(mapCenterPoint, 100000));

        }

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值