2017-04-03 13:01:57 +02:00

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