海拔/高程查询

回到首页  往前 

该范例程序会演示如何查询全球任意位置的海拔/高程信息。

注意1:太乐地图.NET控件 名称统一命名为:MapControl

注意2:该范例程序会调用海拔查询工具类:ElevationTool

(海拔查询工具类有试用时间限制和查询次数限制,请购买授权版控件以解除限制)

注意3:该范例程序会涉及三方程序集:Newtonsoft.Json.dll,不需要引用,但必须添加至程序输出目录

范例运行后界面如下图所示:

海拔/高程查询

源码

using AZMap;

using AZMap.MapProviders;

using AZMap.Util;

using AZMap.WindowsForms;

using AZMap.WindowsForms.Markers;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Windows.Forms;

 

namespace WindowsFormsApplication1

{

  public partial class Form1 : Form

   {

      // 绘制图层

      private AZMapOverlay _graphicLayer = new AZMapOverlay("GRAPHIC_LAYER_" + Guid.NewGuid());

 

      public Form1()

       {

           InitializeComponent();

 

           InitMapControl();

       }

 

      private void InitMapControl()

       {

          // 打开天地图卫星地图

           MapControl.MapProvider = AZMapProviders.TiandituHybridMap3857;

          // 设置鼠标左键拖动地图

           MapControl.DragButton = MouseButtons.Left;

          // 设置地图可以放大做小的最小级别和最大级别

           MapControl.MinZoom = MapControl.MapProvider.MinZoom;

           MapControl.MaxZoom = MapControl.MapProvider.MaxZoom == null ? 24 : (int)MapControl.MapProvider.MaxZoom;

          // 设置初始化的级别和位置

           MapControl.Zoom = 4;

           MapControl.Position = new PointLatLng(35.1019340572461, 106.34765625); //定位在中国区域

          // 添加一个图层用来存储绘制的图形

           MapControl.Overlays.Add(_graphicLayer);

       }

 

      private void button2_Click(object sender, System.EventArgs e)

       {

          // 异步查询鼠标点击位置的海拔信息

          var worker = new BackgroundWorker();

           worker.DoWork += worker_StartQueryAddress;

          // 地图中心点位置

           worker.RunWorkerAsync(MapControl.Position);

       }

 

      /// <summary>

      /// 使用海拔查询工具查询对应坐标海拔信息

      /// </summary>

      /// <param name="sender"></param>

      /// <param name="e"></param>

      private void worker_StartQueryAddress(object sender, DoWorkEventArgs e)

       {

          if (e.Argument == null) return;

 

          try

           {

              var point = (PointLatLng)e.Argument;

              var ele = ElevationTool.GoogleMapEleWithoutKey(point);

              if (ele == null) return;

              string text = string.Format("海拔:{0} (精度:{1})", ele.Elevation.ToString("#0.000"), ele.Resolution.ToString("#0.000"));

 

              var marker = new AZMapMarkerGoogle(MapControl.Position, AZMapMarkerGoogleType.yellow_dot)

               {

                   IsHitTestVisible = true,

                   ToolTipText = text,

                   ToolTipMode = MarkerTooltipMode.Always

               };

               _graphicLayer.Markers.Add(marker);

           }

          catch (Exception ex)

           {

              MessageBox.Show(ex.Message);

           }

       }

   }

}