GMap没有自带国内服务商的地图产品接口,需要在项目中创建相关的类才能调用,下面阐述下如何调用高德地图
1.在创建了UserControl(改天专门写写关于UserControl控件的使用)的前提下,创建一个抽象类基本抽象类GMapProvider
public abstract class AMapProviderBase : GMapProvider
{
public AMapProviderBase()
{
MaxZoom = null;
RefererUrl = "http://www.amap.com/";
Copyright = string.Format("©{0} 高德 Corporation, ©{0} NAVTEQ, ©{0} Image courtesy of NASA", DateTime.Today.Year);
}
public override PureProjection Projection
{
get { return MercatorProjection.Instance; }
}
GMapProvider[] overlays;
public override GMapProvider[] Overlays
{
get
{
if (overlays == null)
{
overlays = new GMapProvider[] { this };
}
return overlays;
}
}
}
2.再创建一个类继承AMapProviderBase
class AMapProvider : AMapProviderBase
{
public static readonly AMapProvider Instance;
readonly Guid id = new Guid("EF3DD303-3F74-4938-BF40-232D0595EE88");
public override Guid Id
{
get { return id; }
}
readonly string name = "AMap";
public override string Name
{
get
{
return name;
}
}
static AMapProvider()
{
Instance = new AMapProvider();
}
public override PureImage GetTileImage(GPoint pos, int zoom)
{
string url = MakeTileImageUrl(pos, zoom, LanguageStr);
return GetTileImageUsingHttp(url);
}
string MakeTileImageUrl(GPoint pos, int zoom, string language)
{
//http://webrd04.is.autonavi.com/appmaptile?x=5&y=2&z=3&lang=zh_cn&size=1&scale=1&style=7
string url = string.Format(UrlFormat, pos.X, pos.Y, zoom);
Console.WriteLine("url:" + url);
return url;
}
static readonly string UrlFormat = "http://webrd04.is.autonavi.com/appmaptile?x={0}&y={1}&z={2}&lang=zh_cn&size=1&scale=1&style=7";
}
3.在主Form中调用
public partial class MapTestForm1 : Form
{
private GMapOverlay markersOverlay = new GMapOverlay(“markers”); //放置marker的图层
// GMapOverlay polyOverlay = new GMapOverlay(“polygons”);
GMapOverlay polyOverlay = new GMapOverlay(“Routes”);
public MapTestForm1()
{
InitializeComponent();
try
{
// System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry(“ditu.amap.com”);
}
catch
{
mapControl1.Manager.Mode = AccessMode.CacheOnly;
MessageBox.Show("No internet connection avaible, going to CacheOnly mode.", "GMap.NET Demo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
mapControl1.CacheLocation = Environment.CurrentDirectory + "\\GMapCache\\"; //缓存位置
// mapControl1.MapProvider = GMapProviders.GoogleChinaMap; //google china 地图
//详情看类AMapProvider与GMapProviders即可明白
mapControl1.MapProvider = AMapProvider.Instance;
mapControl1.MinZoom = 2; //最小比例
mapControl1.MaxZoom = 24; //最大比例
mapControl1.Zoom = 10; //当前比例
mapControl1.ShowCenter = false; //不显示中心十字点
mapControl1.DragButton = System.Windows.Forms.MouseButtons.Left; //左键拖拽地图
mapControl1.Position = new PointLatLng(32.064, 118.704); //地图中心位置:南京
List<PointLatLng> points = new List<PointLatLng>();
points.Add(new PointLatLng(32.064, 118.704));
points.Add(new PointLatLng(32.253, 118.513));
points.Add(new PointLatLng(32.542, 118.322));
// points.Add(new PointLatLng(32.764, 118.104));
//绘制多边形用GMapPolygon
GMapPolygon polygon = new GMapPolygon(points, "mypolygon");
//绘制折线用GMapRoute
GMapRoute route = new GMapRoute(points ,"");
route.Stroke = new Pen(Color.Red, 1);
polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
polygon.Stroke = new Pen(Color.Red, 1);
// polyOverlay.Polygons.Add(polygon);
polyOverlay.Routes.Add(route);
mapControl1.Overlays.Add(polyOverlay);
//PointLatLng point = mapControl1.FromLocalToLatLng(32, 118);
GMapMarker marker = new GMarkerGoogle(mapControl1.Position, GMarkerGoogleType.green);
markersOverlay.Markers.Add(marker);
mapControl1.Overlays.Add(markersOverlay);
mapControl1.MouseClick += new MouseEventHandler(mapControl_MouseClick);
}
void mapControl_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
PointLatLng point = mapControl1.FromLocalToLatLng(e.X, e.Y);
GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
markersOverlay.Markers.Add(marker);
}
}
private void MapTestForm1_Load(object sender, EventArgs e)
{
}
private void mapControl1_Load(object sender, EventArgs e)
{
}
}
![这里写图片描述](https://img-blog.csdn.net/20170511003902349?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzU2OTk1Mjg=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)