ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:773.40KB ,
资源ID:12910743      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12910743.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android Map 开发之高德地图.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Android Map 开发之高德地图.docx

1、Android Map 开发之高德地图Android Map 开发之高德地图如何把 API 添加到我的Android 工程中?创建工程,将从网站下载的AMap_Android_Api_Lib 文件中的MapApi.jar 包拷贝到Libs 文件夹下,Libs 下的文件目录如下所示: 当MapApi.jar 在Libs 文件夹中后,就表示将高德地图Android API 库文件引入工程中了,您就可以在您的程序中使用高德地图API 了。在manifest 中设置相应的权限下面介绍在程序开发中需注意的问题:必须在AndroidManifest.xml 中设置相应的权限,添加代码如下: 注意此添加权限

2、代码与同级。 栅格地图显示MapActivity 是一个抽象类,任何想要显示MapView 的activity 都需要派生自MapActivity。并且在其派生类的onCreate() 中,都要创建一个MapView 实例。 public class GridMapView extends MapActivityprivate MapView mMapView;private MapController mMapController;private GeoPoint point;Override/*显示栅格地图,启用内置缩放控件,并用MapController 控制地图的中心点及Zoom 级别

3、 */protected void onCreate(Bundle savedInstanceState) / TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.mapview); /布局文件夹 res/layout/mapview.xml 文件。mMapView = (MapView) findViewById(R.id.mapView);mMapView.setBuiltInZoomControls(true); /设置启用内置的缩放控件 mMapControl

4、ler = mMapView.getController(); / 得到mMapView 的控制权,可以用它控制和驱动平移和缩放 point = new GeoPoint(int) (39.982378 * 1E6),(int) (116.304923 * 1E6); /用给定的经纬度构造一个GeoPoint,单位是微度(度* 1E6)mMapController.setCenter(point); /设置地图中心点 mMapController.setZoom(12); /设置地图zoom 级别 在布局文件夹 res/layout/mapview.xml 文件中添加地图控件代码如下: 结果见

5、图3-1 栅格地图显示效果图:图3-1 栅格地图显示效果图具体示例请查看参考示例 MapView 中的 GridMapView。矢量地图显示将libminimapv320.so 复制到工程目录下的libsarmeabi,目录结构见图3-2 工程目录结构图: 图3-2 工程目录结构图代码如下:protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.vmapview); mMapView = (MapView) findViewByI

6、d(R.id.vmapView); mMapView.setVectorMap(true);/设置地图为矢量模式 mMapView.setBuiltInZoomControls(true); /设置启用内置的缩放控件 mMapController = mMapView.getController(); / 得到mMapView的控制权,可以用它控制和驱动平移和缩放 point = new GeoPoint(int) (39.90923 * 1E6), (int) (116.397428 * 1E6); /用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) mMapContr

7、oller.setCenter(point); /设置地图中心点 mMapController.setZoom(12); /设置地图zoom级别 结果见图3-3图3-3 矢量地图显示效果图具体示例请查看参考示例MapView 中的VectorMapView。地图覆盖物概述所有叠加或覆盖到地图的内容,统称为地图覆盖物。如标注、矢量图形元素(包括:折线和多边形和圆)、定位图标等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。高德地图Android API 提供了如下几种覆盖物:Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法,实现用户自定义图层显示。MyLocat

8、ionOverlay:一个负责显示用户当前位置的Overlay。ItemizedOverlay:Overlay 的一个基类,包含了一个OverlayItem 列表,相当于一组分条的Overlay,通过继承此类,将一组兴趣点显示在地图上。PoiOverlay:本地搜索图层,提供某一特定地区的位置搜索服务,比如在北京市搜索“天安门”,通过此图层将包含“天安门”关键字的标注显示在地图上。RouteOverlay:公交,驾车导航线路图层,将公交、驾车出行方案的路线及关键点显示在地图上。覆盖物的抽象基类(Overlay)一般来说,在MapView 中添加一个Overlay 需要经过以下步骤:自定义类继承

9、Overlay,并Override 其draw()方法可以实现点,线,面等的显示,如果需要点击、按键、触摸等交互操作,还需Override onTap()等方法。 添加到MapView 的覆盖物中: publicclass MyOverlay extends OverlayOverridepublic void draw(Canvas canvas, MapView mapView, boolean shadow) / TODO Auto-generated method stub super.draw(canvas, mapView, shadow);Point screenPts = ne

10、w Point();mapView.getProjection().toPixels(point, screenPts);/-add the marker-Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.da_marker_red); canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null); Paint paintText = new Paint();paintText.setTextSize(18);paintText.setColor(Col

11、or.BLACK);canvas.drawText(AMap, screenPts.x, screenPts.y, paintText); / 绘制文本Paint mCirclePaint = new Paint();mCirclePaint.setAntiAlias(true);mCirclePaint.setColor(Color.BLUE);mCirclePaint.setAlpha(50);mCirclePaint.setStyle(Style.FILL);canvas.drawCircle(screenPts.x+150, screenPts.y, 50, mCirclePaint)

12、;Paint paintLine = new Paint();paintLine.setColor(Color.RED);paintLine.setStrokeWidth(3.0f);paintLine.setStyle(Paint.Style.STROKE);canvas.drawLine(screenPts.x-100, screenPts.y, screenPts.x, screenPts.y-200, paintLine);Overridepublic boolean onTap(GeoPoint arg0, MapView arg1) / TODO Auto-generated me

13、thod stubreturn super.onTap(arg0, arg1);添加到MapView 的覆盖物中:mMapView.getOverlays().add(new MyOverlay(); 运行结果见图 6-1 覆盖物效果图:当前位置(MyLocationOverlay)将MyLocationOverlay 添加到覆盖物中,能够实现在地图上显示当前位置的图标以及指南针: MyLocationOverlay mylocTest = new MyLocationOverlay(MylocationDemo.this, map);mylocTest.enableMyLocation();

14、mylocTest.enableCompass(); / 打开指南针map.getOverlays().add(mylocTest); 运行结果 见图 6-2 当前位置效果图 :图6-2 当前位置效果图分条目覆盖物(ItemizedOverlay)某个类型的覆盖物,包含多个类型相同、显示方式相同、处理方式相同的项时,使用此类:自定义类继承ItemizedOverlay,并Override 其draw() 方法,如果需要点击、按键、触摸等交互操作,还需Override onTap() 等方法。 class OverItemT extends ItemizedOverlay private Lis

15、t GeoList = new ArrayList();private Drawable marker;private Context mContext;private double mLat1 = 39.9022; / point1 纬度private double mLon1 = 116.3922; / point1 经度private double mLat2 = 39.607723;private double mLon2 = 116.397741;private double mLat3 = 39.917723;private double mLon3 = 116.6552;publ

16、ic OverItemT(Drawable marker, Context context) super(boundCenterBottom(marker);this.marker = marker;this.mContext = context;/ 用给定的经纬度构造GeoPoint,单位是微度(度* 1E6)GeoPoint p1 = new GeoPoint(int) (mLat1 * 1E6), (int) (mLon1 * 1E6);GeoPoint p2 = new GeoPoint(int) (mLat2 * 1E6), (int) (mLon2 * 1E6);GeoPoint

17、p3 = new GeoPoint(int) (mLat3 * 1E6), (int) (mLon3 * 1E6);/ 构造OverlayItem 的三个参数依次为:item 的位置,标题文本,文字片段GeoList.add(new OverlayItem(p1, P1, point1);GeoList.add(new OverlayItem(p2, P2, point2);GeoList.add(new OverlayItem(p3, P3, point3);populate(); /createItem(int)方法构造item。一旦有了数据,在调用其它方法前,首先调用这个方法Overri

18、depublic void draw(Canvas canvas, MapView mapView, boolean shadow) / Projection 接口用于屏幕像素点坐标系统和地球表面经纬度点坐标系统之间的变换Projection projection = mapView.getProjection(); for (int index = size() -1; index = 0; index-) / 遍历GeoListOverlayItem overLayItem = getItem(index); / 得到给定索引的itemString title= overLayItem.g

19、etTitle();/ 把经纬度变换到相对于MapView 左上角的屏幕像素坐标Point point = projection.toPixels(overLayItem.getPoint(), null); / 可在此处添加您的绘制代码Paint paintText = new Paint();paintText.setColor(Color.BLACK);paintText.setTextSize(15);canvas.drawText(title, point.x-30, point.y -25, paintText); / 绘制文本super.draw(canvas, mapView,

20、 shadow);/调整一个drawable 边界,使得(0,0)是这个drawable 底部最后一行中心的一个像素 boundCenterBottom(marker); Overrideprotected OverlayItem createItem(int i) / TODO Auto-generated method stubreturn GeoList.get(i);Overridepublic int size() / TODO Auto-generated method stubreturn GeoList.size(); Override/ 处理当点击事件 protected b

21、oolean onTap(int i) setFocus(GeoList.get(i);Toast.makeText(this.mContext, GeoList.get(i).getSnippet(),Toast.LENGTH_SHORT).show();return true;Overridepublic boolean onTap(GeoPoint point, MapView mapView) / TODO Auto-generated method stubreturn super.onTap(point, mapView); 添加到MapView 的覆盖物中:Drawable ma

22、rker = getResources().getDrawable(R.drawable.da_marker_red); /得到需要标在地图上的资源marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight(); /为maker 定义位置和边界 mMapView.getOverlays().add(new OverItemT(marker, this); /添加ItemizedOverlay 实例到mMapView点击其中一个图标,运行结果见图6-3 分条目覆盖效果图:图6-3 分条目覆盖效果图 本地搜索覆盖物(PoiOverlay)请参见PoiSearch 及PoiOverlay 的类参考。 驾车、公交路线覆盖物(RouteOverlay)请参见驾车路线搜索及RouteOverlay 和公交路线搜索及RouteOverlay 的类参考。 参考资料:

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

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