GMap. NET: Показать мою текущую позицию в Vb. Net из кода C# - PullRequest
0 голосов
/ 17 апреля 2020

Я хотел бы создать приложение на 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? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...