IP精准定位

回到首页  往前  往后

该范例程序会演示如何调用IP精准定位接口对用户当前所在位置进行定位显示。

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

注意2:该功能需要联网支持,在没有网络的情况下无法完成定位操作。

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

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

IP精准定位

源码

      // 默认地标绘制图层

      private AZMapOverlay _defaultMarkersLayer = new AZMapOverlay("DEFAULT_MARKERS_LAYER_" + Guid.NewGuid());

 

      private void InitMapControl()

       {

          // 天地图2019年开始访问服务需要设置秘钥,若要使用天地图,请至官网申请开发许可

          // http://lbs.tianditu.gov.cn/authorization/authorization.html

          // 申请后,请修改输出目录的ConfigUser.xml文件里的KeyTianditu字段(软件默认设置了太乐地图申请的秘钥)

 

          // 打开天地图卫星地图

           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(_defaultMarkersLayer);

       }

 

      /// <summary>

      /// IP精准定位(显示用户当前所在位置,该功能需要联网支持)

      /// </summary>

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

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

      private void button6_Click(object sender, EventArgs e)

       {

           _defaultMarkersLayer.Markers.Clear(); // 先清除图层

 

                    // 调用百度地图IP定位接口

          var ipPlace = IPLocationTool.BaiduIpLocation();

          if (!ipPlace.Point.IsEmpty)

           {

               MapControl.Position = ipPlace.Point;

               MapControl.Zoom = 16;

 

              // 绘制一个小圆显示用户所在位置

              var marker = new AZMapMarkerEllipse(ipPlace.Point) // 新建一个Marker地标对象

               {

                   IsHitTestVisible = false,

                   EnableRightClick = false, // 是否允许右击

                   Fill = new SolidBrush(Color.FromArgb(155, Color.Blue)), // 填充颜色

                   Pen = new Pen(Brushes.Red, 4) // 边线颜色和大小

                 

               };

               _defaultMarkersLayer.Markers.Add(marker); // 在图层中添加

              MessageBox.Show("定位成功!");

           }

          else

           {

              MessageBox.Show("定位失败!");

           }

       }