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);
}
}
}
}
|