1)从两个textbox分别输入的经度和纬度,则可以按以下方式转换
成都创新互联公司是一家专注于成都网站设计、网站制作与策划设计,五莲网站建设哪家好?成都创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:五莲等地区。五莲做网站价格咨询:18982081108
double lat = double.Parse(txtLatitude.Text);
double lng = double.Parse(txtLongitude.Text);
//得到Marker点的PointLatLng
PointLatLng p = new PointLatLng(lat, lng);
2)从两个textbox分别输入的相对于地图控件左上角的屏幕坐标(像素),则可以按以下方式转换
int x = int.Parse(txtPosX.Text);
int y = int.Parse(txtPosY.Text);
//得到Marker点的PointLatLng
PointLatLng p = mapControl.FromLocalToLatLng(x, y);
3)假设地图上有一个marker
//获得marker的地理坐标
PointLatLng p = marker.Positon;
//将地理坐标转换成屏幕坐标
GPoint gp = mapControl.FromLatLngToLocal(marker.Position);
long x = gp.X; //marker点先对与地图控件左上角的x
long y = gp.Y; //marker点先对与地图控件左上角的y
这是我知道的唯一途径能取得这样的成绩是创建PointLatLng点列表,并绘制这些多边形。下面是一个例子。
私人无效CreateCircle(的PointF点,双半径,INT段)
{
文件清单 PointLatLng gpollist =新的List PointLatLng();
双SEG = Math.PI * 2 /段;
INT Y = 0;
的for(int i = 0; I段;我++)
{
双THETA =赛格*我;
双A = point.x + Math.cos(THETA)*半径;
双B = point.y + Math.sin(THETA)*半径;
PointLatLng GPOI =新PointLatLng(A,B);
gpollist.Add(GPOI);
}
GMapPolygon gpol =新GMapPolygon(gpollist“POL”);
overlayOne.Polygons.Add(gpol);
}
离线地图导出后,要自己加载的,并不是那个目录下的,C:\Users\用户名你的计算机用户名\AppData\Local\GMap.NET\TileDBv5\en下的那个文件包含缓存的。
代码如下:
MapManagerLoader.Instance.Load(ConfigurationManager.AppSettings["MapData"]); // 载入离线地图数据,MapData自己在appSetting中定义
this.MainMap.Manager.Mode = AccessMode.CacheOnly; //地图读取模式:服务器/本地缓存
其中MapManagerLoader代码如下:
using System.Threading;
using GMap.NET;
namespace Client.WPF.Util
{
public class MapManagerLoader
{
private static readonly MapManagerLoader _instance = new MapManagerLoader();
public static MapManagerLoader Instance
{
get { return _instance; }
}
private MapManagerLoader()
{
}
private bool _isLoaded;
public bool Load(string fileName)
{
if (!_isLoaded)
{
new Thread(() = GMaps.Instance.ImportFromGMDB(fileName)).Start();
_isLoaded = true;
}
return _isLoaded;
}
}
}
GAMP.NET没有提供这个功能,你可以编程实现。
1)向GMapControl控件添加一个GMapOverlay层
2)采用默认的GMarker来标注你感兴趣的建筑物
3)点击GMarker时,由你提供该建筑物内人员、建筑面积等信息,然后用GMapToolTip显示这些信息。