- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[VB.NET] Hướng dẫn add Marker trên google map sử dụng thư viện GMap
Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách thêm marker lên trên bản đồ google map sử dụng thư viện GMap.
Trong lập trình ứng dụng, khi các bạn muốn thêm từng địa điểm của mình lên bản đồ trong lập trình vb.net.
Ví dụ: Một công ty có nhiều chi nhánh và mình muốn hiển thị tất cả các tọa độ của những chi nhánh đó lên trên bản đồ google map.
Dưới đây, là giao diện demo ứng dụng add marker trên google map:
Đầu tiên, các bạn nhớ cài đặt thư viện Gmap vào project nhé, các bạn có thể lấy thư viện ở source code của mình ở bên dưới
Source code Add marker on google map vb.net:
Imports GMap
Imports GMap.NET
Imports GMap.NET.MapProviders
Imports GMap.NET.WindowsForms
Imports GMap.NET.WindowsForms.Markers
Public Class Form1
Dim marker As GMarkerGoogle
Dim markerOverlay As GMapOverlay
Dim dt As DataTable
Dim selection As Integer = 0
Dim Lat As Double = 10.826479
Dim Lng As Double = 106.722285
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dt = GetTable()
For Each dr As DataRow In dt.Rows
'Tạo marker position map
markerOverlay = New GMapOverlay(dr.Item("Name"))
marker = New GMarkerGoogle(New PointLatLng(dr.Item("Lat"), dr.Item("Lng")), GMarkerGoogleType.red_dot)
markerOverlay.Markers.Add(marker)
marker.ToolTipMode = MarkerTooltipMode.Always
marker.ToolTipText = String.Format("{0}" + vbNewLine + " Kinh độ: {1} " + vbNewLine + " Vĩ độ: {2}", dr.Item("Name"), dr.Item("Lat"), dr.Item("Lng"))
GMapControl1.Overlays.Add(markerOverlay)
Next
GMapControl1.DragButton = MouseButtons.Left
GMapControl1.CanDragMap = True
GMapControl1.MapProvider = GMapProviders.GoogleMap
GMapControl1.Position = New PointLatLng(Lat, Lng)
GMapControl1.MinZoom = 0
GMapControl1.MaxZoom = 24
GMapControl1.Zoom = 12
GMapControl1.AutoScroll = True
CreateCircle(Lat, Lng, 10000)
End Sub
Function GetTable() As DataTable
Dim table As New DataTable
table.Columns.Add("Name", GetType(String))
table.Columns.Add("Lat", GetType(Double))
table.Columns.Add("Lng", GetType(Double))
table.Rows.Add("Đại học Văn Lang", 10.812598, 106.694913)
table.Rows.Add("Đại học Kinh Tế", 10.78351, 106.694706)
table.Rows.Add("Đại học Bách Khoa", 10.77268, 106.658814)
table.Rows.Add("Đại học Công Nghiệp", 10.831681, 106.68731)
table.Rows.Add("Đại học Sư phạm kỹ thuật", 10.851418, 106.77142)
Return table
End Function
Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
ToolTip1.SetToolTip(TrackBar1, TrackBar1.Value.ToString())
GMapControl1.Zoom = TrackBar1.Value
End Sub
Private Sub GMapControl1_OnMapZoomChanged() Handles GMapControl1.OnMapZoomChanged
TrackBar1.Value = GMapControl1.Zoom
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
GMapControl1.Position = New PointLatLng(Lat, Lng)
GMapControl1.Zoom = 12
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
Application.Exit()
End Sub
'//////////////////////// Draw circle ///////////////////////////
Private Sub CreateCircle(ByVal lat As Double, ByVal lon As Double, ByVal radius As Double)
Dim point As PointLatLng = New PointLatLng(lat, lon)
Dim segments As Integer = 1000
Dim gpollist As List(Of PointLatLng) = New List(Of PointLatLng)()
For i As Integer = 0 To segments - 1
gpollist.Add(FindPointAtDistanceFrom(point, i, radius / 1000))
Next
Dim gpol As GMapPolygon = New GMapPolygon(gpollist, "Circle")
Dim polyOverlay As GMapOverlay = New GMapOverlay("Circle")
gpol.Stroke.DashStyle = Drawing2D.DashStyle.Custom
gpol.Fill = New SolidBrush(Color.FromArgb(50, Color.Red)) ' Thay màu ở đây
gpol.Stroke = New Pen(Color.FromArgb(30, Color.Red), 1) ' Thay màu ở đây
GMapControl1.Overlays.Add(polyOverlay)
polyOverlay.Polygons.Add(gpol)
End Sub
Public Shared Function FindPointAtDistanceFrom(ByVal startPoint As GMap.NET.PointLatLng, ByVal initialBearingRadians As Double, ByVal distanceKilometres As Double) As GMap.NET.PointLatLng
Const radiusEarthKilometres As Double = 6371.01
Dim distRatio = distanceKilometres / radiusEarthKilometres
Dim distRatioSine = Math.Sin(distRatio)
Dim distRatioCosine = Math.Cos(distRatio)
Dim startLatRad = DegreesToRadians(startPoint.Lat)
Dim startLonRad = DegreesToRadians(startPoint.Lng)
Dim startLatCos = Math.Cos(startLatRad)
Dim startLatSin = Math.Sin(startLatRad)
Dim endLatRads = Math.Asin((startLatSin * distRatioCosine) + (startLatCos * distRatioSine * Math.Cos(initialBearingRadians)))
Dim endLonRads = startLonRad + Math.Atan2(Math.Sin(initialBearingRadians) * distRatioSine * startLatCos, distRatioCosine - startLatSin * Math.Sin(endLatRads))
Return New GMap.NET.PointLatLng(RadiansToDegrees(endLatRads), RadiansToDegrees(endLonRads))
End Function
Public Shared Function DegreesToRadians(ByVal degrees As Double) As Double
Const degToRadFactor As Double = Math.PI / 180
Return degrees * degToRadFactor
End Function
Public Shared Function RadiansToDegrees(ByVal radians As Double) As Double
Const radToDegFactor As Double = 180 / Math.PI
Return radians * radToDegFactor
End Function
End Class
HAPPY CODING