浠水县二手房,工作单位证明怎么写,牛东发菜
先看地址解析,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);
}
}
}
效果图如下:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论