高德android api 开发指南文档格式.docx

上传人:b****5 文档编号:17374683 上传时间:2022-12-01 格式:DOCX 页数:21 大小:1.78MB
下载 相关 举报
高德android api 开发指南文档格式.docx_第1页
第1页 / 共21页
高德android api 开发指南文档格式.docx_第2页
第2页 / 共21页
高德android api 开发指南文档格式.docx_第3页
第3页 / 共21页
高德android api 开发指南文档格式.docx_第4页
第4页 / 共21页
高德android api 开发指南文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

高德android api 开发指南文档格式.docx

《高德android api 开发指南文档格式.docx》由会员分享,可在线阅读,更多相关《高德android api 开发指南文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

高德android api 开发指南文档格式.docx

7<

8android:

android.permission.ACCESS_NETWORK_STATE"

9<

10android:

android.permission.WRITE_EXTERNAL_STORAGE"

11<

12android:

android.permission.READ_PHONE_STATE"

13<

14android:

android.permission.CHANGE_WIFI_STATE"

15<

16android:

android.permission.ACCESS_WIFI_STATE"

地图显示

如何把API添加到我的Android工程中?

首先创建工程,并在工程BuildPath>

ConfigureBuildPath…>

libraries中选择“AddExternelJARs…”,选定MapApi.jar,点击OK,这样就可以将高德地图AndroidAPI库文件引入。

然后在工程BuildPath>

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<

LinearLayoutxmlns:

android="

40xmlns:

autonavi="

41android:

orientation="

vertical"

android:

layout_width="

fill_parent"

42android:

layout_height="

43<

com.amap.mapapi.map.MapViewandroid:

id="

@+id/mapView"

44android:

45android:

clickable="

true"

46/>

47<

/LinearLayout>

结果见图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();

65point=newGeoPoint((int)(39.90923*1E6),

66(int)(116.397428*1E6));

67mMapController.setCenter(point);

68mMapController.setZoom(12);

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<

overlayitem>

{

167privateList<

GeoList=newArrayList<

();

168privateDrawablemarker;

169privateContextmContext;

170privatedoublemLat1=39.9022;

//point1纬度

171privatedoublemLon1=116.3922;

//point1经度

1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1