Zeeshan Ajmal
Zeeshan Ajmal

Reputation: 880

Location information where mouse click on the map GMap.net

I'm working on Win Forms application along with GMap.net(a library that enables us to use Google Maps in Win Forms Application). Coming straight to the point, I be able to get the coordinates i.e (Latitude and Longitude) where my mouse click (left click).

 private void gm1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            double lat = gm1.FromLocalToLatLng(e.X, e.Y).Lat;
            double lng = gm1.FromLocalToLatLng(e.X, e.Y).Lng;
        }
    }

I did not find a way to get the location of that place i.e Country Name, city name etc.

I've searched the forum of Google maps but i did not find this issue answered.

Any

Upvotes: 8

Views: 18368

Answers (2)

Shree John
Shree John

Reputation: 1

while using GMap.Net Libraries, coordinates are used for specific location using latitute and longitute. As question, even place name can be used to locate the position.

            GMapControl.MapProvider = MapProviders.GoogleTerrainMapProvider.Instance
            

            GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache
            With Me.GMapControl
                .Position = New GMap.NET.PointLatLng(latitute, longitute)
                .SetPositionByKeywords("Nepal")
                .Zoom = mp_zomlvl
                .ShowCenter = False
            End With
            GMapControl.Refresh()

Remove code: .Position = New GMap.NET.PointLatLng(latitute, longitute) for using .SetPositionByKeywords("Nepal")

Upvotes: 0

Davidi
Davidi

Reputation: 61

This will give you a list of the named places on the position you click on the map.

   private void map_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            double lat = map.FromLocalToLatLng(e.X, e.Y).Lat;
            double lng = map.FromLocalToLatLng(e.X, e.Y).Lng;
        }

        List<Placemark> plc = null;
        var st = GMapProviders.GoogleMap.GetPlacemarks(map.FromLocalToLatLng(e.X, e.Y), out plc);
        if (st == GeoCoderStatusCode.G_GEO_SUCCESS && plc != null)
        {
            foreach (var pl in plc)
            {
                if (!string.IsNullOrEmpty(pl.PostalCodeNumber))
                {
                    Debug.WriteLine("Accuracy: " + pl.Accuracy + ", " + pl.Address + ", PostalCodeNumber: " + pl.PostalCodeNumber);
                }
            }
        }
    }

Upvotes: 6

Related Questions