onmousemove - 如何在 GMap.net 中使用 MouseMove 返回纬度/经度

标签 onmousemove gmap.net

我正在尝试将 C# 程序与 GMap 放在一起,并且我希望鼠标在屏幕底部显示的坐标。我在表单中添加了一个 OnMouseMove 方法,并且我确实得到了坐标,但前提是鼠标不在 map 本身上。如果鼠标在 map 上,它不会响应。我对 c# 相当陌生,所以我可能错过了一些相当简单的东西。有任何想法吗?下面是我现在使用的代码。

    public partial class Form1 : Form
{
    protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
    {
        base.OnMouseMove(e);

        if(e.Button == MouseButtons.Left)
        {
            int itest=2;
        }

        double X = mapexplr.FromLocalToLatLng(e.X, e.Y).Lng;
        double Y = mapexplr.FromLocalToLatLng(e.X, e.Y).Lat;


        string longitude = X.ToString();
        string latitude = Y.ToString();
        LongStrip.Text = longitude;
        LatStrip.Text = latitude;
    }

    GMapOverlay overlayOne;

    public Form1()
    {
        InitializeComponent();
    }

    private void mapexplr_Load(object sender, EventArgs e)
    {
        //initialisation de notre map
        mapexplr.MapProvider = GMap.NET.MapProviders.BingMapProvider.Instance;
        GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache;
        mapexplr.Position = new PointLatLng(35.571458, -85.547961);

        mapexplr.DragButton = MouseButtons.Left;
        mapexplr.SetCurrentPositionByKeywords("Tunisia");
        mapexplr.MapProvider = GMapProviders.BingMap;
        mapexplr.MinZoom = 3;
        mapexplr.MaxZoom = 17;
        mapexplr.Zoom = 5;
        mapexplr.Manager.Mode = AccessMode.ServerAndCache;
        //ajout des overlay
        overlayOne = new GMapOverlay(mapexplr, "OverlayOne");
        //ajout de Markers
        overlayOne.Markers.Add(new GMap.NET.WindowsForms.Markers.GMapMarkerGoogleGreen(new PointLatLng(36.657403, 10.327148)));
        //ajout de overlay à la map
        mapexplr.Overlays.Add(overlayOne);

    }
}

最佳答案

private void gMapControl1_MouseMove(object sender, MouseEventArgs e)
    {
        lat = gMapControl1.FromLocalToLatLng(e.X, e.Y).Lat;
        lng = gMapControl1.FromLocalToLatLng(e.X, e.Y).Lng;
        label1.Text = "lat= " + Convert.ToString(lat)+ "   lng= " +Convert.ToString(lng);
        label1.BackColor = Color.Transparent;

        mouseY = e.Location.Y;
        mouseX = e.Location.X;
        label1.Location = new Point(mouseX, mouseY+10); 



    }

关于onmousemove - 如何在 GMap.net 中使用 MouseMove 返回纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18874868/

相关文章:

c# - Gmap.net 与 sqlite 数据库

c# - 将自定义标记(正方形)添加到 Gmap

c# - GMap.Net 缩放鼠标悬停/悬停标记问题

javascript - 幻灯片的多个实例破坏了代码

c# - 改变标记的颜色

mfc - 如何确定鼠标是顺时针还是逆时针移动?

matlab - MATLAB 中 imfreehand 工具的采样率?

c# - 在 map 上显示圆圈会显示拉长的椭圆形

javascript - 网站能否区分有机鼠标移动和使用 PhantomJS 执行的移动之间的区别?

c++ - IDC_PICTURE 坐标上的 OnMouseMove