Gmap.net百度地图开发
2016-03-30 14:53
399 查看
1、 地图展示
创建用户控件,继承GMapControl,当前用户继承了gmap地图控件的所有功能。
需要展示地图的窗体,在展示地图的面板上面添加创建的地图用户控件。并在窗体中定义三个全局变量
internal readonly GMapOverlay objects = new GMapOverlay("objects");
internal readonly GMapOverlay routes = new GMapOverlay("routes");
internal readonly GMapOverlay polygons = new GMapOverlay("polygons");
objects,routes,polygons,分别是地图上面创建的三个单层。其实这个定义,主要是根据你的需要的来定义的,比如我这里,objects主要是标注电子罗盘和gps的定位展示;routes主要展示路线的层;polygons是展示多边形的,比如你需要在地图上面圈区域,就可以用这个。
2、 地图初始化
在窗体初始化时,对地图进行初始化加载。
MainMap.Manager.Mode = AccessMode.CacheOnly;
地图数据获取的方式,总共有三种方式,我这里写到的是只是缓存,除了CacheOnly还有ServerOnly、ServerAndCache
本地缓存加载、网络加载、本地和网络同时加载,本地和网络加载是地图在加载的时候先加载本地数据库的地图瓦片,如果不存在了,将从网络获取到地图瓦片,一遍进行地图展示,一遍保存到本地数据库中。
MainMap.MapProvider = GMapProviders.BaiduMap;
这里主要是选择地图加载的数据源。这个主要是看你后台编写了哪些地图的数据源,我这里主要是百度地图和谷歌地图。
MainMap.Position=
new PointLatLng(39.915168,116.403875);
地图当前展示的位置
MainMap.MinZoom = 3;
MainMap.MaxZoom = 20;
MainMap.Zoom = 9;
MainMap.DragButton = MouseButtons.Left;
上面设置的是地图缩放的最小级数和最大技术,以及当前地图展示的层级。下面DragButton是地图拖拽的方式,在默认下是右键,我觉得太别扭了,就改成了左键。
地图的基本展示我们已经实现了,但是我们要在地图上面测距啥的,还有绘制路线怎么实现呢?这里我们就需要加载上面定义的三个单层
MainMap.Overlays.Add(routes);
MainMap.Overlays.Add(polygons);
MainMap.Overlays.Add(objects);
把三个层级加入
怎么绘制啊,后面给你说吧。
地图初始化可以设置的事件有OnPositionChanged(位置改变)、OnTileLoadComplete(地图瓦片加载完成)、OnTileLoadStart(地图开始加载)、OnMapDrag(地图拖拽)、OnMapZoomChanged(缩放级改变)、OnMapTypeChanged(地图类型改变)等等
3、 地图数据供应
我这里以百度为例子:
创建抽象类BaiduMapProviderBase实现GMapProvider 抽象类,
创建BaiduMapProvider实现BaiduMapProviderBase,这里主要的操作内容是MakeTileImageUrl,获取地图的瓦片
string MakeTileImageUrl(GPoint pos, int zoom, string language)
{
zoom = zoom - 1;
var offsetX = Math.Pow(2, zoom);
var offsetY = offsetX - 1;
var numX = pos.X - offsetX;
var numY = -pos.Y + offsetY;
zoom = zoom + 1;
var x = numX.ToString().Replace("-", "M");
var y = numY.ToString().Replace("-", "M");
UrlID = (pos.X + pos.Y) % 5;
string url = string.Format(UrlFormat, UrlID, x, y, zoom);
Console.WriteLine("url:" + url);
return url;
}
地图标注可以在http://www.cnblogs.com/luxiaoxun/p/3530341.html看,介绍的很详细。
创建用户控件,继承GMapControl,当前用户继承了gmap地图控件的所有功能。
需要展示地图的窗体,在展示地图的面板上面添加创建的地图用户控件。并在窗体中定义三个全局变量
internal readonly GMapOverlay objects = new GMapOverlay("objects");
internal readonly GMapOverlay routes = new GMapOverlay("routes");
internal readonly GMapOverlay polygons = new GMapOverlay("polygons");
objects,routes,polygons,分别是地图上面创建的三个单层。其实这个定义,主要是根据你的需要的来定义的,比如我这里,objects主要是标注电子罗盘和gps的定位展示;routes主要展示路线的层;polygons是展示多边形的,比如你需要在地图上面圈区域,就可以用这个。
2、 地图初始化
在窗体初始化时,对地图进行初始化加载。
MainMap.Manager.Mode = AccessMode.CacheOnly;
地图数据获取的方式,总共有三种方式,我这里写到的是只是缓存,除了CacheOnly还有ServerOnly、ServerAndCache
本地缓存加载、网络加载、本地和网络同时加载,本地和网络加载是地图在加载的时候先加载本地数据库的地图瓦片,如果不存在了,将从网络获取到地图瓦片,一遍进行地图展示,一遍保存到本地数据库中。
MainMap.MapProvider = GMapProviders.BaiduMap;
这里主要是选择地图加载的数据源。这个主要是看你后台编写了哪些地图的数据源,我这里主要是百度地图和谷歌地图。
MainMap.Position=
new PointLatLng(39.915168,116.403875);
地图当前展示的位置
MainMap.MinZoom = 3;
MainMap.MaxZoom = 20;
MainMap.Zoom = 9;
MainMap.DragButton = MouseButtons.Left;
上面设置的是地图缩放的最小级数和最大技术,以及当前地图展示的层级。下面DragButton是地图拖拽的方式,在默认下是右键,我觉得太别扭了,就改成了左键。
地图的基本展示我们已经实现了,但是我们要在地图上面测距啥的,还有绘制路线怎么实现呢?这里我们就需要加载上面定义的三个单层
MainMap.Overlays.Add(routes);
MainMap.Overlays.Add(polygons);
MainMap.Overlays.Add(objects);
把三个层级加入
怎么绘制啊,后面给你说吧。
地图初始化可以设置的事件有OnPositionChanged(位置改变)、OnTileLoadComplete(地图瓦片加载完成)、OnTileLoadStart(地图开始加载)、OnMapDrag(地图拖拽)、OnMapZoomChanged(缩放级改变)、OnMapTypeChanged(地图类型改变)等等
3、 地图数据供应
我这里以百度为例子:
创建抽象类BaiduMapProviderBase实现GMapProvider 抽象类,
创建BaiduMapProvider实现BaiduMapProviderBase,这里主要的操作内容是MakeTileImageUrl,获取地图的瓦片
string MakeTileImageUrl(GPoint pos, int zoom, string language)
{
zoom = zoom - 1;
var offsetX = Math.Pow(2, zoom);
var offsetY = offsetX - 1;
var numX = pos.X - offsetX;
var numY = -pos.Y + offsetY;
zoom = zoom + 1;
var x = numX.ToString().Replace("-", "M");
var y = numY.ToString().Replace("-", "M");
UrlID = (pos.X + pos.Y) % 5;
string url = string.Format(UrlFormat, UrlID, x, y, zoom);
Console.WriteLine("url:" + url);
return url;
}
地图标注可以在http://www.cnblogs.com/luxiaoxun/p/3530341.html看,介绍的很详细。
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#比较二个数组并找出相同或不同元素的方法