您的位置:首页 > 编程语言 > C#

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看,介绍的很详细。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息