当前位置: 移动技术网 > IT编程>开发语言>.net > GMap.Net开发之地址解析与路径查找

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

2018年04月13日  | 移动技术网IT编程  | 我要评论

浠水县二手房,工作单位证明怎么写,牛东发菜

先看地址解析,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);

                }

            }

        }

 

效果图如下:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网