Я хотел бы создать приложение на Vb. net, чтобы при запуске оно отображало мою текущую позицию на карте с использованием библиотеки GMap. Net. Я сделал этот код (где map
объявлен как GMapControl
):
Imports System.Device.Location
Imports GMap.NET
Imports GMap.NET.MapProviders
Public Class Form1
Dim watcher As GeoCoordinateWatcher = New GeoCoordinateWatcher(GeoPositionAccuracy.Default)
Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
GMapProviders.GoogleMap.ApiKey = "xxxx"
InitializeComponent()
watcher.Start()
If watcher.TryStart(False, TimeSpan.FromSeconds(3)) Then
LocationMessage()
Else
MsgBox("Couldn't find Position")
End If
End Sub
Public Sub LocationMessage()
Dim whereat = watcher.Position.Location
Dim lat = whereat.Latitude.ToString("0.000000")
Dim lon = whereat.Longitude.ToString("0.000000")
map.DragButton = MouseButtons.Left
map.MapProvider = GMapProviders.GoogleMap
map.Position = New PointLatLng(Convert.ToDouble(lat), Convert.ToDouble(lon))
End Sub
End Class
Но когда я пытаюсь его запустить, он ничего не показывает на карте или получает исключение System.OverflowException. Я попытался сделать тот же код в C#, и он отлично работает, вот код:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using GMap.NET.MapProviders;
using GMap.NET;
using System.Device.Location;
using GMap.NET.WindowsForms;
using GMap.NET.WindowsForms.Markers;
namespace GMapC
{
public partial class Form1 : Form
{
private GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
public Form1()
{
InitializeComponent();
watcher.Start();
if (watcher.TryStart(false, TimeSpan.FromSeconds(3)))
{
LocationMessage();
}
else
{
MessageBox.Show("Couldn't find Position");
}
}
private void LocationMessage()
{
var whereat = watcher.Position.Location;
var Lat = whereat.Latitude.ToString("0.000000");
var Lon = whereat.Longitude.ToString("0.000000");
map.DragButton = MouseButtons.Left;
map.MapProvider = GMapProviders.GoogleMap;
map.Position = new PointLatLng(Convert.ToDouble(Lat), Convert.ToDouble(Lon));
}
private void Form1_Load(object sender, EventArgs e)
{
GMapProviders.GoogleMap.ApiKey = @"xxxx";
LocationMessage();
}
}
}
Что не так в коде Vb. net? Спасибо