115 lines
3.7 KiB
VB.net
115 lines
3.7 KiB
VB.net
Imports DevExpress.XtraMap
|
|
|
|
Public Class frmGeodataSelect
|
|
Public SelectedPoint As GeoPoint = Nothing
|
|
Dim _SelectActive As Boolean = False
|
|
Private BING_KEY As String = "hQUTlqLLK70bETnonpfi~0jx1pIAq1yQ7gXqbIyzKrg~Au-Tewbty8afAxdbNilSv4JlU7qwU-fQKu0ouH9e1uJmpIyVdA3jugVEWMdy1Rbt"
|
|
|
|
Private ReadOnly Property ImageLayer() As ImageTilesLayer
|
|
Get
|
|
Return CType(MapControl1.Layers("ImageLayer"), ImageTilesLayer)
|
|
End Get
|
|
End Property
|
|
|
|
Private ReadOnly Property VectorLayer() As VectorItemsLayer
|
|
Get
|
|
Return CType(MapControl1.Layers("VectorLayer"), VectorItemsLayer)
|
|
End Get
|
|
End Property
|
|
|
|
Private ReadOnly Property ItemStorage() As MapItemStorage
|
|
Get
|
|
Return CType(VectorLayer.Data, MapItemStorage)
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub New(currentPoint As GeoPoint)
|
|
SelectedPoint = currentPoint
|
|
|
|
Me.InitializeComponent()
|
|
End Sub
|
|
|
|
Private Sub frmGeodataSelect_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
Dim dataProvider As New BingMapDataProvider()
|
|
dataProvider.BingKey = BING_KEY
|
|
ImageLayer.DataProvider = dataProvider
|
|
|
|
Dim XMLPath = Get_Settings_Filename()
|
|
Dim layout As New ClassLayout(XMLPath)
|
|
|
|
Dim storage As New MapItemStorage()
|
|
VectorLayer.Data = storage
|
|
|
|
If SelectedPoint IsNot Nothing Then
|
|
Dim pin = New MapPushpin()
|
|
pin.Location = SelectedPoint
|
|
ItemStorage.Items.Add(pin)
|
|
|
|
txtLat.Text = SelectedPoint.Latitude.ToString()
|
|
txtLon.Text = SelectedPoint.Longitude.ToString()
|
|
|
|
Dim zoomLevel = layout.GetValue("MapControlSelect_ZoomLevel")
|
|
|
|
If IsNothing(zoomLevel) Then
|
|
MapControl1.ZoomLevel = 10.0
|
|
Else
|
|
MapControl1.ZoomLevel = Double.Parse(zoomLevel)
|
|
End If
|
|
|
|
MapControl1.ZoomToFit(New List(Of MapPushpin) From {pin})
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub MapControl1_Click(sender As Object, e As MouseEventArgs) Handles MapControl1.Click
|
|
If e.Button <> System.Windows.Forms.MouseButtons.Left Then
|
|
Exit Sub
|
|
End If
|
|
If _SelectActive = False Then
|
|
Exit Sub
|
|
End If
|
|
Dim point As GeoPoint = MapControl1.ScreenPointToCoordPoint(e.Location)
|
|
|
|
Dim items As New List(Of MapPushpin)
|
|
Dim storage As New MapItemStorage()
|
|
|
|
Dim pin = New MapPushpin()
|
|
pin.Location = point
|
|
|
|
ItemStorage.Items.Clear()
|
|
ItemStorage.Items.Add(pin)
|
|
|
|
txtLat.Text = point.Latitude.ToString()
|
|
txtLon.Text = point.Longitude.ToString()
|
|
|
|
SelectedPoint = point
|
|
End Sub
|
|
|
|
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
|
|
Dim XMLPath = Get_Settings_Filename()
|
|
Dim layout As New ClassLayout(XMLPath)
|
|
Dim settings As New System.Collections.Generic.List(Of ClassSetting)
|
|
settings = layout.Load()
|
|
|
|
layout.PutValue("MapControlSelect_ZoomLevel", MapControl1.ZoomLevel)
|
|
|
|
Me.DialogResult = System.Windows.Forms.DialogResult.OK
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Function Get_Settings_Filename()
|
|
Dim Filename As String = String.Format("{0}-Geodata-Layout.xml", CURRENT_CONSTRUCTOR_ID)
|
|
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
End Function
|
|
|
|
Private Sub tsbtnactivate_Click(sender As Object, e As EventArgs) Handles tsbtnactivate.Click
|
|
If _SelectActive = False Then
|
|
_SelectActive = True
|
|
tsbtnactivate.Checked = True
|
|
Else
|
|
tsbtnactivate.Checked = False
|
|
_SelectActive = False
|
|
End If
|
|
End Sub
|
|
End Class |