高德android api 开发指南.docx
- 文档编号:4448285
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:21
- 大小:1.78MB
高德android api 开发指南.docx
《高德android api 开发指南.docx》由会员分享,可在线阅读,更多相关《高德android api 开发指南.docx(21页珍藏版)》请在冰豆网上搜索。
高德androidapi开发指南
API简介
什么是高德地图AndroidAPI?
高德地图AndroidAPI版是一套基于Android1.6及以上设备的应用程序接口,通过该接口,用户可以轻松访问高德地图服务和数据,构建功能丰富、交互性强的地图应用程序。
高德地图AndroidAPI不仅包含构建地图的基本接口,还提供了诸如矢量地图、栅格地图、地图定位(GPS、基站、WiFi)、本地搜索、路线规划等数据服务,用户可以根据自己的需要进行选择。
面向的读者
本API是提供给具有一定Android编程经验和了解面向对象概念的读者使用的。
此外,读者还应该对地图产品有一定的了解。
用户在使用中遇到任何问题,可以通过问答社区反馈给我们。
兼容性
系统:
支持Android1.6及以上系统。
注意事项
下面介绍在程序开发中需注意的问题:
必须在manifest中设置相应的权限,代码如下:
源码复制打印关于
1 2android: name="android.permission.ACCESS_COARSE_LOCATION">
3 4android: name="android.permission.ACCESS_FINE_LOCATION">
5 6android: name="android.permission.INTERNET">
7 8android: name="android.permission.ACCESS_NETWORK_STATE">
9 10android: name="android.permission.WRITE_EXTERNAL_STORAGE">
11 12android: name="android.permission.READ_PHONE_STATE">
13 14android: name="android.permission.CHANGE_WIFI_STATE">
15 16android: name="android.permission.ACCESS_WIFI_STATE">
地图显示
如何把API添加到我的Android工程中?
首先创建工程,并在工程BuildPath>ConfigureBuildPath…>libraries中选择“AddExternelJARs…”,选定MapApi.jar,点击OK,这样就可以将高德地图AndroidAPI库文件引入。
然后在工程BuildPath>ConfigureBuildPath…>OrderandExport中将引入的库文件MapApi.jar选中,点击OK,这样您就可以在您的程序中使用高德地图API了。
栅格地图显示
MapActivity是一个抽象类,任何想要显示MapView的activity都需要派生自MapActivity。
并且在其派生类的onCreate()中,都要创建一个MapView实例。
源码复制打印关于
17publicclassGridMapViewextendsMapActivity{
18privateMapViewmMapView;
19privateMapControllermMapController;
20privateGeoPointpoint;
21@Override
22/**
23*显示栅格地图,启用内置缩放控件,并用MapController控制地图的中心点及Zoom级别
24*/
25protectedvoidonCreate(BundlesavedInstanceState){
26//TODOAuto-generatedmethodstub
27super.onCreate(savedInstanceState);
28setContentView(R.layout.mapview);
29mMapView=(MapView)findViewById(R.id.mapView);
30mMapView.setBuiltInZoomControls(true);//设置启用内置的缩放控件
31mMapController=mMapView.getController();//得到mMapView的控制权,可以用它控制和驱动平移和缩放
32point=newGeoPoint((int)(39.982378*1E6),
33(int)(116.304923*1E6));//用给定的经纬度构造一个GeoPoint,单位是微度(度*1E6)
34mMapController.setCenter(point);//设置地图中心点
35mMapController.setZoom(12);//设置地图zoom级别
36}
37}
在布局xml中添加地图控件:
源码复制打印关于
38
xmlversion="1.0"encoding="utf-8"?
>
39 android=" 40xmlns: autonavi=" 41android: orientation="vertical"android: layout_width="fill_parent" 42android: layout_height="fill_parent"> 43 id="@+id/mapView" 44android: layout_width="fill_parent"android: layout_height="fill_parent" 45android: clickable="true" 46/> 47 结果见图3-1栅格地图显示效果图: 图3-1栅格地图显示效果图 矢量地图显示 将libminimapv320.so复制到工程目录下的libs\armeabi,目录结构见图3-2工程目录结构图: 图3-2工程目录结构图 代码如下: 源码复制打印关于 48publicclassVectorMapViewextendsMapActivity{ 49privateMapViewmMapView; 50privateMapControllermMapController; 51privateGeoPointpoint; 52@Override 53/** 54*显示矢量地图,将libminimapv300.so复制到工程目录下的libs\armeabi。 55*启用内置缩放控件,并用MapController控制地图的中心点及Zoom级别 56*/ 57protectedvoidonCreate(BundlesavedInstanceState){ 58//TODOAuto-generatedmethodstub 59this.setMapMode(MAP_MODE_VECTOR);//设置地图为矢量模式 60super.onCreate(savedInstanceState); 61setContentView(R.layout.mapview); 62mMapView=(MapView)findViewById(R.id.mapView); 63mMapView.setBuiltInZoomControls(true);//设置启用内置的缩放控件 64mMapController=mMapView.getController();//得到mMapView的控制权,可以用它控制和驱动平移和缩放 65point=newGeoPoint((int)(39.90923*1E6), 66(int)(116.397428*1E6));//用给定的经纬度构造一个GeoPoint,单位是微度(度*1E6) 67mMapController.setCenter(point);//设置地图中心点 68mMapController.setZoom(12);//设置地图zoom级别 69} 70} 结果见图3-3矢量地图显示效果图: 图3-3矢量地图显示效果图 定位信息 API如何获取定位信息 高德地图AndroidAPI中提供了GPS和网络(基站和WiFi)定位。 如果使用此功能,必须注册GPS和网络的使用权限,请参考注意事项。 在获取用户位置时,优先使用GPS进行定位;如果GPS定位没有打开或者没有可用位置信息,则判断是否通过网络(基站和WiFi)连接,如果是,高德地图会根据手机所在环境选择WiFi或者基站获取用户当前位置。 源码复制打印关于 71publicclassLocationManagerextendsActivity{ 72privateLocationManagerProxylocationManager=null; 73privatestaticfinallongmLocationUpdateMinTime=0; 74privatestaticfinalfloatmLocationUpdateMinDistance=0; 75privateTextViewmyLocation; 76/**Calledwhentheactivityisfirstcreated.*/ 77@Override 78publicvoidonCreate(BundlesavedInstanceState){ 79super.onCreate(savedInstanceState); 80setContentView(R.layout.location); 81myLocation=(TextView)findViewById(R.id.myLocation); 82locationManager=LocationManagerProxy.getInstance(this); 83} 84@Override 85protectedvoidonPause(){ 86//TODOAuto-generatedmethodstub 87super.onPause(); 88locationManager.removeUpdates(locationListener); 89} 90@Override 91protectedvoidonResume(){ 92//TODOAuto-generatedmethodstub 93super.onResume(); 94//获取当前可用的Provider,其中AMapNetwork为AMap网络定位(基站和WiFi) 95for(finalStringprovider: locationManager.getProviders(true)){ 96if(LocationManagerProxy.GPS_PROVIDER.equals(provider)||LocationProviderProxy.AMapNetwork.equals(provider)){ 97locationManager.requestLocationUpdates(provider,mLocationUpdateMinTime,mLocationUpdateMinDistance, 98locationListener); 99} 100} 101} 102LocationListenerlocationListener=newLocationListener(){ 103@Override 104publicvoidonLocationChanged(Locationlocation){ 105//TODOAuto-generatedmethodstub 106if(location! =null){ 107DoublegeoLat=location.getLatitude(); 108DoublegeoLng=location.getLongitude(); 109myLocation.setText("定位成功: ("+geoLng+","+geoLat+")"); 110} 111} 112@Override 113publicvoidonProviderDisabled(Stringprovider){ 114} 115@Override 116publicvoidonProviderEnabled(Stringprovider){ 117} 118@Override 119publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){ 120} 121}; 122} 如何通过MyLocationOverlay实现自动定位 首先在程序中打开相关权限,然后将MyLocationOverlay实例添加到MapView中,并调用enableMyLocation()方法,即可实现当前位置的显示。 如果想让地图跟随当前位置移动,需要继承MyLocationOverlay并实现其onLocationChanged()方法,调用MapView.getController().animateTo()方法移动地图位置。 源码复制打印关于 123MyLocationOverlaymylocTest=newMyLocationOverlay(MylocationDemo.this,map); 124mylocTest.enableMyLocation(); 125mylocTest.enableCompass();//打开指南针 126map.getOverlays().add(mylocTest); 结果见图4-1自动定位图: 图4-1自动定位图 地图图层 地图图层概念 地图可以包含一个或多个图层,每个图层在各个级别都是由若干张图块组成的,它们覆盖了地球的整个表面。 例如,用户所看到包括街道、兴趣点、学校、公园等内容的地图展现就是一个图层,另外,实时路况、轨道交通等的展现也是通过图层来实现的。 底图 基本的地图图层,包括若干个缩放级别,显示基本的地图信息,包括道路、街道、学校、公园等内容。 实时路况 高德地图提供北京,上海,广州,深圳,天津,重庆,沈阳,长春,石家庄,太原,西安,成都,武汉,南京,杭州,福州,青岛,大连,宁波,无锡,常州,厦门,东莞,珠海等24个城市的实时交通路况查询。 在地图中显示路况信息息示例如下: 源码复制打印关于 127mMapView.setTraffic(true);//显示实时路况 运行程序,结果见图5-1实时路况效果图: 地图覆盖物 概述 所有叠加或覆盖到地图的内容,统称为地图覆盖物。 如标注、矢量图形元素((包括: 折线和多边形和圆))、定位图标等。 覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。 高德地图AndroidAPI提供了如下几种覆盖物: Overlay: 覆盖物的抽象基类,所有的覆盖物均继承此类的方法,实现用户自定义图层显示。 MyLocationOverlay: 一个负责显示用户当前位置的Overlay。 ItemizedOverlay: Overlay的一个基类,包含了一个OverlayItem列表,相当于一组分条的Overlay,通过继承此类,将一组兴趣点显示在地图上。 PoiOverlay: 本地搜索图层,提供某一特定地区的位置搜索服务,比如在北京市搜索“天安门”,通过此图层将包含“天安门”关键字的标注显示在地图上。 RouteOverlay: 公交,驾车导航线路图层,将公交、驾车出行方案的路线及关键点显示在地图上。 覆盖物的抽象基类(Overlay) 一般来说,在MapView中添加一个Overlay需要经过以下步骤: 自定义类继承Overlay,并Override其draw()方法可以实现点,线,面等的显示,如果需要点击、按键、触摸等交互操作,还需OverrideonTap()等方法。 添加到MapView的覆盖物中: 源码复制打印关于 128publicclassMyOverlayextendsOverlay{ 129@Override 130publicvoiddraw(Canvascanvas,MapViewmapView,booleanshadow){ 131//TODOAuto-generatedmethodstub 132super.draw(canvas,mapView,shadow); 133PointscreenPts=newPoint(); 134mapView.getProjection().toPixels(point,screenPts); 135//---addthemarker--- 136Bitmapbmp=BitmapFactory.decodeResource( 137getResources(),R.drawable.da_marker_red); 138canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null); 139PaintpaintText=newPaint(); 140paintText.setTextSize(18); 141paintText.setColor(Color.BLACK); 142canvas.drawText("★AMap",screenPts.x,screenPts.y,paintText);//绘制文本 143PaintmCirclePaint=newPaint(); 144mCirclePaint.setAntiAlias(true); 145mCirclePaint.setColor(Color.BLUE); 146mCirclePaint.setAlpha(50); 147mCirclePaint.setStyle(Style.FILL); 148canvas.drawCircle(screenPts.x+150,screenPts.y,50,mCirclePaint); 149PaintpaintLine=newPaint(); 150paintLine.setColor(Color.RED); 151paintLine.setStrokeWidth(3.0f); 152paintLine.setStyle(Paint.Style.STROKE); 153canvas.drawLine(screenPts.x-100,screenPts.y,screenPts.x,screenPts.y-200,paintLine); 154} 155@Override 156publicbooleanonTap(GeoPointarg0,MapViewarg1){ 157//TODOAuto-generatedmethodstub 158returnsuper.onTap(arg0,arg1); 159} 160} 添加到MapView的覆盖物中: 源码复制打印关于 161mMapView.getOverlays().add(newMyOverlay()); 运行结果见图6-1覆盖物效果图: 当前位置(MyLocationOverlay) 将MyLocationOverlay添加到覆盖物中,能够实现在地图上显示当前位置的图标以及指南针: 源码复制打印关于 162MyLocationOverlaymylocTest=newMyLocationOverlay(MylocationDemo.this,map); 163mylocTest.enableMyLocation(); 164mylocTest.enableCompass();//打开指南针 165map.getOverlays().add(mylocTest); 运行结果见图6-2当前位置效果图: 图6-2当前位置效果图 分条目覆盖物(ItemizedOverlay) 某个类型的覆盖物,包含多个类型相同、显示方式相同、处理方式相同的项时,使用此类: 自定义类继承ItemizedOverlay,并Override其draw()方法,如果需要点击、按键、触摸等交互操作,还需OverrideonTap()等方法。 源码复制打印关于 166classOverItemTextendsItemizedOverlay 167privateList 168privateDrawablemarker; 169privateContextmContext; 170privatedoublemLat1=39.9022;//point1纬度 171privatedoublemLon1=116.3922;//point1经度 1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高德android api 开发指南 android 开发 指南
![提示](https://static.bdocx.com/images/bang_tan.gif)