1)從兩個(gè)textbox分別輸入的經(jīng)度和緯度,則可以按以下方式轉(zhuǎn)換
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),五蓮網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:五蓮等地區(qū)。五蓮做網(wǎng)站價(jià)格咨詢(xún):18982081108
double?lat?=?double.Parse(txtLatitude.Text);
double?lng?=?double.Parse(txtLongitude.Text);
//得到Marker點(diǎn)的PointLatLng
PointLatLng?p?=?new?PointLatLng(lat,?lng);
2)從兩個(gè)textbox分別輸入的相對(duì)于地圖控件左上角的屏幕坐標(biāo)(像素),則可以按以下方式轉(zhuǎn)換
int?x?=?int.Parse(txtPosX.Text);
int?y?=?int.Parse(txtPosY.Text);
//得到Marker點(diǎn)的PointLatLng
PointLatLng?p?=?mapControl.FromLocalToLatLng(x,?y);
3)假設(shè)地圖上有一個(gè)marker
//獲得marker的地理坐標(biāo)
PointLatLng?p?=?marker.Positon;
//將地理坐標(biāo)轉(zhuǎn)換成屏幕坐標(biāo)
GPoint?gp?=?mapControl.FromLatLngToLocal(marker.Position);
long?x?=?gp.X;??//marker點(diǎn)先對(duì)與地圖控件左上角的x
long?y?=?gp.Y;??//marker點(diǎn)先對(duì)與地圖控件左上角的y
這是我知道的唯一途徑能取得這樣的成績(jī)是創(chuàng)建PointLatLng點(diǎn)列表,并繪制這些多邊形。下面是一個(gè)例子。
私人無(wú)效CreateCircle(的PointF點(diǎn),雙半徑,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);
}
離線(xiàn)地圖導(dǎo)出后,要自己加載的,并不是那個(gè)目錄下的,C:\Users\用戶(hù)名你的計(jì)算機(jī)用戶(hù)名\AppData\Local\GMap.NET\TileDBv5\en下的那個(gè)文件包含緩存的。
代碼如下:
MapManagerLoader.Instance.Load(ConfigurationManager.AppSettings["MapData"]); // 載入離線(xiàn)地圖數(shù)據(jù),MapData自己在appSetting中定義
this.MainMap.Manager.Mode = AccessMode.CacheOnly; //地圖讀取模式:服務(wù)器/本地緩存
其中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沒(méi)有提供這個(gè)功能,你可以編程實(shí)現(xiàn)。
1)向GMapControl控件添加一個(gè)GMapOverlay層
2)采用默認(rèn)的GMarker來(lái)標(biāo)注你感興趣的建筑物
3)點(diǎn)擊GMarker時(shí),由你提供該建筑物內(nèi)人員、建筑面積等信息,然后用GMapToolTip顯示這些信息。