欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

GMap.Net开发之地址解析与路径查找

程序员文章站 2022-05-07 21:16:45
先看地址解析,GMap中的地址解析主要用到GeocodingProvider中的如下方法:   //根据关键字得到一组坐标 GeoCoderStatusCode G...
先看地址解析,GMap中的地址解析主要用到GeocodingProvider中的如下方法:

 

//根据关键字得到一组坐标

GeoCoderStatusCode GetPoints(string keywords, out List<PointLatLng> pointList); 

 

//根据关键字得到一个坐标

PointLatLng? GetPoint(string keywords, out GeoCoderStatusCode status);

 

//根据坐标得到一组地址

GeoCoderStatusCode GetPlacemarks(PointLatLng location, out List<Placemark> placemarkList);

 

//根据坐标得到一个地址

 

先定义一些变量:

 

 

        private GMapOverlay locations = new GMapOverlay("locations"); //放置搜索结果的图层

        private GeocodingProvider gp; //地址编码服务

        List<PointLatLng> searchResult = new List<PointLatLng>(); //搜索结果

        PointLatLng start = PointLatLng.Empty; //路径开始点

        PointLatLng end = PointLatLng.Empty;   //路径结束点

 

 

        mapControl.Overlays.Add(locations); //不要忘了添加使用的图层

 

地址解析的准确度和当前使用的地图服务有很大关系,一般使用什么MapProvider就使用该MapProvider提供的服务。

 

如我使用的是GoogleChinaMap,就使用google的地址解析:

 

 

            mapControl.MapProvider = GMapProviders.GoogleChinaMap; //google china 地图

 

            gp = mapControl.MapProvider as GeocodingProvider;

            if (gp == null) //地址转换服务,没有就使用OpenStreetMap

            {

                gp = GMapProviders.OpenStreetMap as GeocodingProvider;

            }

 

地址解析一般有2种情况,第一种就是根据坐标点得到该点对应的地址信息,在map的double click中,我们得到双击点的地址信息:

 

 

        void mapControl_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            if (e.Button == System.Windows.Forms.MouseButtons.Left)

            {

                PointLatLng point = mapControl.FromLocalToLatLng(e.X, e.Y);

                GeoCoderStatusCode statusCode = GeoCoderStatusCode.Unknow;

                Placemark? place = gp.GetPlacemark(point, out statusCode);

                if (statusCode == GeoCoderStatusCode.G_GEO_SUCCESS)

                {

                    GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.green);

                    marker.ToolTipText = place.Value.Address;

                    marker.ToolTipMode = MarkerTooltipMode.Always;

 

                    locations.Markers.Add(marker);

                }

            }

        }

 

效果图如下:

GMap.Net开发之地址解析与路径查找