百度地图

来源:互联网 发布:广告配音软件破解 编辑:程序博客网 时间:2024/06/10 22:39

使用百度地图可以到http://developer.baidu.com/map/中下载SDK,sdk中有实例代码以及详细讲解。

百度地图有6个核心类:

BMapManager

MapView是地图主控件,相当于ViewGroup(可以填加控件)

MapView的MKMapViewListener用于处理地图事件回调。

MapController用于完成地图控制 。

使用百度地图之前需要先申请一个API Key,如:

key:1A4A4ABEFBEECD8C17DEE880C4EA69B9607020B5

在加载layout之前必须先验证key:

mBMapManager.init(String strKey, MKGeneralListener listener);

strKey - 申请的授权验证码;listener - 注册回调事件.

MKGeneralListener是一个接口,其中有两个方法:onGetNetworkState(int iError)和onGetPermissionState(int iError)。分别是验证网络和验证授权key的。

增加缩放按钮用:mapView.setBuiltInZoomControls(true);

控制器controller是通过mapView.getController();获得的,可以控制地图的平移旋转缩放

平移:将给定的位置点以动画的形式移动至地图中心。

controller.animateTo(GeoPoint point);

GeoPoint表示一个地理坐标点,存放经度和纬度,以微度的整数形式存储。

controller.setCenter(GeoPoint point);方法是将给定点设置为地图显示的中心。

旋转:水平旋转,旋转范围是:-180------180

int mapRotation = mapView.getMapRotation();

mapRotation += 30;

controller.setRotation(mapRotation);

俯视角度旋转,旋转范围是:0------  -45

int mapOverlooking = mapView.getMapOverlooking();

mapOverlooking += -30;

controller.setOverlooking(mapOverlooking);

缩放

controller.setZoom(float zoomLevel);//设置地图的缩放级别,范围是[3,19]

controller.zoomIn();//放大一级

controller.zoomOut();//缩小一级


设置显示交通图:mapView.setTraffic(true);

设置显示卫星图:mapView.setSatellite(true);


覆盖物

所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图形元素(包括:折线和多边形和圆)、定位图标等。覆盖物拥有自己的地理坐标,当拖动或缩放地图时,它们会相应的处理。

覆盖物包括:

覆盖物的抽象基类:Overlay(第④个核心类

几何图形绘制覆盖物:GraphicsOverlay

文字绘制覆盖物:TextOverlay

分条目覆盖物:ItemizedOverlay

本地搜索覆盖物:PoiOverlay

路线规划覆盖物:RouteOverlay

换乘路线覆盖物:TransitOverlay

我的位置覆盖物:MyLocationOverlay

从2.0.0开始,SDK不支持直接继承Overlay,用户可以通过继承ItemizedOverlay来添加覆盖物。

添加覆盖物步骤:

①定义覆盖物

GraphicsOverlay graphicsOverlay = new GraphicsOverlay(mapView);

②设置覆盖物的数据

graphicsOverlay.setData(drawCircle());// drawCircle()的代码见下面

③将覆盖物集合添加到mapView

mapView.getOverlays().add(graphicsOverlay);

④刷新mapView

mapView.refresh();

private Graphic drawCircle() {// 构建圆Geometry circleGeometry = new Geometry();// 设置圆心和半径circleGeometry.setCircle(homePoint, 2500);//设置样式Symbol circleSymbol = new Symbol();Symbol.Color circleColor = circleSymbol.new Color();circleColor.red = 0;circleColor.green = 255;circleColor.blue = 0;circleColor.alpha = 126;/* * color - 颜色status - 填充状态,0表示不填充,1表示填充linewidth - 线宽,当填充状态为填充时线宽无意义 */circleSymbol.setSurface(circleColor,1,3);//生成Graphic对象Graphic circleGraphic = new Graphic(circleGeometry, circleSymbol);return circleGraphic;}

其他覆盖物的例子参考SDK中的代码。


搜索

百度地图移动版API集成搜索服务包括:位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索。

核心类:

⑤MKSearch

⑥MKSearchListener

实现思路:

①初始化MKSearch类,通过init方法注册搜索结果的监听对象MKSearchListener,实现异步搜索服务。

接口MKSearchListener中有8种搜索方法:

步行路线搜索

onGetWalkingRouteResult(MKWalkingRouteResult result, int iError)

公交搜索

onGetTransitRouteResult(MKTransitRouteResult result, int iError)

联想词信息搜索

onGetSuggestionResult(MKSuggestionResult result, int iError)

poi搜索poi(Point of Interest兴趣点)

onGetPoiResult(MKPoiResult result, int type, int iError)

poi详情信息搜索

onGetPoiDetailSearchResult(int type, int iError)

驾乘路线搜索

onGetDrivingRouteResult(MKDrivingRouteResult result, int iError)

公交详情信息搜索

onGetBusDetailResult(MKBusLineResult result, int iError)

地址信息搜索

onGetAddrResult(MKAddrInfo result, int iError)

②通过自定义MySearchListener实现类,处理不同的回调方法,获得搜索结果。

③发起搜索

如:mkSearch.poiSearchNearBy("加油站", homePoint, 5000);


另外,需要将mapView的生命周期与Activity同步,所以要重写Activity的onResume()、onPause()、onDestroy()方法,并在这几个方法中调用mapView的相应方法mapView.onResume()、mapView.onPause()、mapView.destroy()。

0 0
原创粉丝点击