画地标(多种样式)

回到首页  往前  往后

该范例程序会演示如何绘制多种样式的地标,包括:谷歌样式地标、闪动告警地标、可旋转的地标、矢量圆形地标、固定大小的圆形地标,十字地标。

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

注意2:该范例程序涉及到1个地图事件:DrawMarker

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

手绘谷歌样式地标

源码

      /// <summary>

      /// 手绘地标(谷歌样式)

      /// </summary>

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

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

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

       {

           MapControl.ToolBar = MapToolBar.Point;

           MapControl.DrawMarker(DrawGoogleMarkerCallBack);

          MessageBox.Show("请在地图上点击...");

       }

 

      private void DrawGoogleMarkerCallBack(AZMapMarker marker)

       {

          // AZMapMarkerGoogleType可指定地标样式,详见下方:谷歌地标样式列表

          var m = new AZMapMarkerGoogle(marker.Position, AZMapMarkerGoogleType.yellow_pushpin)

           {

               IsHitTestVisible = true,

               ToolTipText = "谷歌样式地标", // 鼠标提示内容

               ToolTipMode = MarkerTooltipMode.Always, // 鼠标提示模式

           };

 

           _graphicLayer.Markers.Add(m);

       }

谷歌地标样式列表(AZMapMarkerGoogleType)

blue_pushpin

green_pushpin

yellow_pushpin

lightblue_pushpin

pink_pushpin

purple_pushpin

red_pushpin

 

blue

green

yellow

lightblue

orange

pink

purple

red

 

blue_dot

green_dot

yellow_dot

lightblue_dot

orange_dot

pink_dot

purple_dot

red_dot

 

orange_small

white_small

black_small

gray_small

brown_small

blue_small

green_small

yellow_small

purple_small

red_small

 

arrow

 

bike_site

blind_road

bus_station

channelized_intersection

electronic_police

isolation_facilities

lane_mark

mandatory_sign

parking_space

prohibition_sign

signal_light

six_meter_intersection

solar_energy_facilities

taxi_station

warning_sign

手绘闪动告警地标

源码

      /// <summary>

      /// 手绘地标(可自定义图标样式,并且进行闪动告警)

      /// </summary>

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

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

      private void button2_Click(object sender, EventArgs e)

       {

           MapControl.ToolBar = MapToolBar.Point;

           MapControl.DrawMarker(DrawFlashMarkerCallBack);

          MessageBox.Show("请在地图上点击...");

       }

 

      private void DrawFlashMarkerCallBack(AZMapMarker marker)

       {

          // Properties.Resources.danger为自定义的地标图片

          var m = new AZMapMarkerImage(marker.Position, Properties.Resources.danger)

           {

               IsHitTestVisible = true,

               IsHighlight = false,

               FlashPen = new Pen(Brushes.Red, 4), // 闪动的样式

               ToolTipText = "告警", // 鼠标提示内容

               ToolTipMode = MarkerTooltipMode.OnMouseOver // 鼠标提示模式

           };

           m.StartFlash();

          //m.StopFlash(); // 停止闪动

           _graphicLayer.Markers.Add(m);

       }

绘制可旋转的地标

源码

      /// <summary>

      /// 绘制地标(可自定义图标样式,可旋转)

      /// </summary>

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

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

      private void button3_Click(object sender, EventArgs e)

       {

          // 在地图中心点绘制

          // Properties.Resources.plane为自定义的飞机图标,0为旋转角度

          var m0 = new AZMapMarkerDirection(MapControl.Position, Properties.Resources.plane, 0)

           {

               IsHitTestVisible = true,

           };

           _graphicLayer.Markers.Add(m0);

 

          // 右

          var pRight = new PointLatLng(MapControl.Position.Lat, MapControl.Position.Lng + 10);

          var mRight = new AZMapMarkerDirection(pRight, Properties.Resources.plane, 45)

           {

               IsHitTestVisible = true,

           };

           _graphicLayer.Markers.Add(mRight);

          // 下

          var pDown = new PointLatLng(MapControl.Position.Lat - 10, MapControl.Position.Lng);

          var mDown = new AZMapMarkerDirection(pDown, Properties.Resources.plane, 135)

           {

               IsHitTestVisible = true,

           };

           _graphicLayer.Markers.Add(mDown);

          // 左

          var pLeft = new PointLatLng(MapControl.Position.Lat, MapControl.Position.Lng - 10);

          var mLeft = new AZMapMarkerDirection(pLeft, Properties.Resources.plane, 225)

           {

               IsHitTestVisible = true,

           };

           _graphicLayer.Markers.Add(mLeft);

          // 上

          var pTop = new PointLatLng(MapControl.Position.Lat + 10, MapControl.Position.Lng);

          var mTop = new AZMapMarkerDirection(pTop, Properties.Resources.plane, 315)

           {

               IsHitTestVisible = true,

           };

           _graphicLayer.Markers.Add(mTop);

       }

手绘矢量圆形地标

源码

      /// <summary>

      /// 手绘地标

      /// (矢量圆形,自动匹配地图分辨率,放大缩小地图后圆形也会跟随变化,以保证每个级别都能覆盖相同的地理范围)

      /// </summary>

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

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

      private void button4_Click(object sender, EventArgs e)

       {

           MapControl.ToolBar = MapToolBar.Point;

           MapControl.DrawMarker(DrawCircleMarkerCallBack);

          MessageBox.Show("请在地图上点击...");

       }

 

      private void DrawCircleMarkerCallBack(AZMapMarker marker)

       {

          var m = new AZMapMarkerCircle(marker.Position)

           {

               IsHitTestVisible = true,

               Radius = 500000, // 圆的半径

               Pen = new Pen(Brushes.Silver, 2), // 边线颜色和粗细

               Fill = new SolidBrush(Color.FromArgb(155, Color.AliceBlue)), // 填充色,155为透明度

               ToolTipText = "矢量圆形,自动匹配地图分辨率", // 鼠标提示内容

               ToolTipMode = MarkerTooltipMode.OnMouseOver // 鼠标提示模式

           };

           _graphicLayer.Markers.Add(m);

       }

手绘固定大小的圆形地标

源码

      /// <summary>

      /// 手绘地标(圆形,固定大小)

      /// </summary>

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

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

      private void button5_Click(object sender, EventArgs e)

       {

           MapControl.ToolBar = MapToolBar.Point;

           MapControl.DrawMarker(DrawEllipseMarkerCallBack);

          MessageBox.Show("请在地图上点击...");

       }

 

      private void DrawEllipseMarkerCallBack(AZMapMarker marker)

       {

          var m = new AZMapMarkerEllipse(marker.Position)

           {

               IsHitTestVisible = true,

               Pen = new Pen(Brushes.AliceBlue, 2), // 边线颜色和粗细

               Fill = new SolidBrush(Color.FromArgb(155, Color.Blue)), // 填充色,155为透明度

               ToolTipText = "固定大小圆形", // 鼠标提示内容

               ToolTipMode = MarkerTooltipMode.OnMouseOver // 鼠标提示模式

           };

           _graphicLayer.Markers.Add(m);

       }

手绘十字样式地标

源码

      /// <summary>

      /// 手绘地标(十字样式)

      /// </summary>

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

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

      private void button6_Click(object sender, EventArgs e)

       {

           MapControl.ToolBar = MapToolBar.Point;

           MapControl.DrawMarker(DrawCrossMarkerCallBack);

          MessageBox.Show("请在地图上点击...");

       }

 

      private void DrawCrossMarkerCallBack(AZMapMarker marker)

       {

          var m = new AZMapMarkerCross(marker.Position)

           {

               IsHitTestVisible = true,

               Pen = new Pen(Brushes.Red, 2), // 边线颜色和粗细

               ToolTipText = "十字地标", // 鼠标提示内容

               ToolTipMode = MarkerTooltipMode.OnMouseOver // 鼠标提示模式

           };

           _graphicLayer.Markers.Add(m);

       }

绘制动态雷达图

源码

      /// <summary>

      /// 绘制动态雷达图

      /// </summary>

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

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

      private void button10_Click(object sender, EventArgs e)

       {

          // 绘制在北京

           MapControl.Zoom = 12;

          var pos = new PointLatLng(40.1956590933647, 116.4111328125);

           MapControl.Position = pos;

          var radar = new AZMapMarkerRadar(pos)

           {

               Radius = 10000,

               Speed = 10

           };

           _graphicLayer.Markers.Add(radar);

       }