坐标纠偏

回到首页  往前  往后

该范例程序会演示如何调用坐标纠偏工具类对经纬度坐标进行纠偏。

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

注意2:该范例程序会调用坐标纠偏工具类:RectifyTool,支持WGS84、GCJ02、BD09三种标准互转,并且支持批量高速转换,详见范例程序演示

(坐标纠偏工具类有试用时间限制和纠偏数量限制,请购买授权版控件以解除限制)

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

坐标纠偏

源码

using AZMap;

using AZMap.MapProviders;

using AZMap.Util;

using System.Collections.Generic;

using System.Windows.Forms;

 

namespace WindowsFormsApplication1

{

  public partial class Form1 : Form

   {

      // 初始化坐标纠偏工具(只需初始化一次,因此作为全局变量)

      RectifyTool rectifyTool = RectifyTool.Instance;

 

      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); //定位在中国区域

       }

 

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

       {

          if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))

           {

              MessageBox.Show("请输入经纬度坐标");

              return;

           }

 

          // 读取需要转换的经纬度坐标

          double lng = double.Parse(textBox1.Text);

          double lat = double.Parse(textBox2.Text);

          var wgs = new List<PointLatLng> { new PointLatLng(lat, lng) };

 

          // 坐标纠偏

          // 支持WGS84、GCJ02、BD09三种标准互转,并且支持批量高速转换

 

          // WGS84转:

          // GCJ02请调用接口:WGS84ListToGCJ02或WGS84ToGCJ02

          // BD09请调用接口:WGS84ListToBD09或WGS84ToBD09

 

          // GCJ02转:

          // WGS84请调用接口:GCJ02ListToWGS84或GCJ02ToWGS84

          // BD09请调用接口:GCJ02ListToBD09或GCJ02ToBD09

 

          // BD09转:

          // WGS84请调用接口:BD09ListToWGS84或BD09ToWGS84

          // GCJ02请调用接口:BD09ListToGCJ02或BD09ToGCJ02

 

          // 此处将WGS84经纬度坐标转换为GCJ02标准

          List<PointLatLng> mar = rectifyTool.WGS84ListToGCJ02(wgs);

          if (wgs != null)

           {

              MessageBox.Show(string.Format("转换后的坐标为:X={0} Y={1}", mar[0].Lng.ToString(), mar[0].Lat.ToString()));

           }

       }

   }

}