




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用AutoNavi MAP API 开发地图应用为什么要使用AutoNavi MAP API AutoNavi MAP API 概述 AutoNavi Android MAP API 与 Google Android Map API 比较 如何使用 AutoNavi MAP API 如何实现坐标偏转 如何创建MapView 如何创建ItemizedOverlay 如何创建PoiSearch 如何创建Geocoder 如何创建MyLocation FAQ技术支持(QQ群:122795260, 邮箱:)为什么要使用AutoNavi MAP API因为商业上的原因,联想不能在中国市场发布的手机上预装Google相关的手机服务,包括Google地图API。为了解决这一问题,我们和高德公司(AutoNavi)合作,在手机上预置了AutoNavi提供的多种基于位置的服务。高德公司作为中国领先的导航电子地图内容和位置服务解决方案提供商,旗下的互联网MAP API()同样在业界具有良好的口碑。可为客户提供跨平台、跨媒体的位置服务解决方案。我们同时鼓励中国的开发者们,使用AutoNavi MAP API开发基于位置和地图应用程序,并且发布在中国市场中的联想手机上。AutoNavi MAP API 概述AutoNavi MAP API是高德软件公司提供的调用地图的接口方法。用户的应用程序可以通过AutoNavi MAP API提供的接口方法操作地图数据,实现位置相关或地图相关应用。例如,通过调用AutoNavi MAP API,将地图数据整合到自己的应用中,可以将商户的地理位置信息在地图上进行标注,以很直观的形式展现给使用者。AutoNavi MAP API还将添加自驾,公交及步行的线路规划API。同时,还将加入对矢量地图的支持,大幅提高地图下载的速度。在不久的将来,还会加入3D街区图和其他的个性化地理数据支持。要创建一个地图,需要在一个页面布局中扩展MapActivity及实现MapView类。您必须设置android:apiKey才能在您的应用中使用MapView获取地图数据。在模拟器环境中,您可以通过申请调试API 秘钥,进行程序开发。但在发布时,您必须申请签名证书的API秘钥,并替换MapView中的调试API秘钥。AutoNavi MAP API 的详细内容可参考 /。AutoNavi Android MAP API 与 Google Android Map API 比较首先, AutoNavi Android MAP API 与Google Android Map API是基本兼容的,只需替换Java包名和Map API Key,即可将Google Android Map API替换为AutoNavi Android MAP API。在此基础之上,AutoNavi Android MAP API同时还提供了一些个性化的功能和服务, 见下文介绍:1. 坐标偏转:根据中国相关法律规律,GPS坐标首先需要经过偏转,否则此位置点将不能与电子地图匹配。AntoNavi Android MAP API支持了坐标偏转功能,并且在类MyLocation中内置了此功能,因此位置点显示相比较为准确。 2. 本地缓存:位置相关应用的特点是用户的地图访问有一定的局部性。因此,AutoNavi Android MAP API增加了本地缓存功能,此功能有助于提高速度,且减少最终用户资费。 3. Cell ID定位(手机基站定位): 根据手机的当前连接基站,确定位置。此功能使用Android Location Manager机制,可以与现有的定位机制无缝集成。当GPS无信号时,可实现使用Cell ID定位。 4. Geocodeing & Reverse Geocoding(地理编码与逆地理编码):在国外,位置信息地址描述相对比较精确,例如:XX市XX街道XX号。但在中国,由于一些生活习惯的特点和差异,用户一般不会准确描述位置信息地址,而是选择通过以下描述来定位位置:XX路口。具体场景如: “我在XX路口等你“ 或 ”我们在XX大厦旁边见面“。根据此特点,我们进行了本地化设计,因此高德地理编码与逆地理编码API满足了此类需求。 5. Poi搜索: 通过高德Poi搜索API,简单的几条语句,即可进行POI搜索,并且将结果标注在地图上。这大大简化了程序开发人员的工作。另一方面,高德的地理搜索引擎支持语义级别的POI搜索。具体场景: 假设有一个应用想在当前地图上标注所有饭馆,如果使用通用的搜索,如何设置搜索关键字呢?“饭馆”,“饭馆+餐厅”,“吃饭”?似乎没有非常合理的方案。而高德的地理搜索引擎除传统的全文搜索外,同时提供类别搜索。开发人员可自行组合高德POI类别,实现在AutoNavi MAP API 的基础上创造出自有应用程序更强大的应用。 在AutoNavi中未支持的Google Map API类名方法注释MapViewvoid computeScroll()不支持boolean isSatellite()不支持卫星图boolean isStreetView()不支持街景图boolean isTraffic()不支持交通图android.view.View getZoomControls()Deprecated; Google已声明不支持使用该方法void preLoad()调用无效void setSatellite(boolean on)不支持卫星图void setStreetView(boolean on)不支持街景图void setTraffic(boolean on)不支持交通图MapView.LayoutParamsjava.lang.String debug(java.lang.String output)不支持MapActivityprotectedboolean isLocationDisplayed()Google内部统计函数,不支持protected abstractboolean isRouteDisplayed()Overlay.Snappableboolean onSnapToItem(int x, int y, android.graphics.Point snapPoint, MapView mapView)不支持ItemizedOverlayboolean onSnapToItem(int x, int y, android.graphics.Point snapPoint, MapView mapView)不支持MyLocationOverlayboolean onSnapToItem(int x, int y, android.graphics.Point snapPoint, MapView mapView)不支持TrackballGestureDetector手势探测,此类中全部函数不支持如何使用 AutoNavi MAP API在这一节里我们会通过例子来展示如何创建一个使用AutoNavi API的应用并加以详细说明。AutoNavi MAP API 允许用户在自己的应用中加入地图功能,给地图添加各种标注、折线等,同时可以进行地图相关操作、显示信息提示窗口等功能。通过本教程使用户可以创建一个MapActivity的子类,将MapView显示于其上,并可以用MapController来控制显示的坐标、视野高度。处理起来非常简单。注意事项下面介绍在程序开发中要注意的一些问题:首先是必须要申请一个Map Api Key, 具体方法可参考这里/android/faq其次,是一定要在manifest.xml中设置相应的权限,比如:view sourceprint?1. 2. 3.如何创建MapViewMapActivity是一个抽象类,任何想要显示MapView的activity都需要派生自MapActivity。并且在其派生类的onCreate()中,都要创建一个MapView实例。 可以通过MapView constructor (then add it to a layout View with ViewGroup.addView(View) 或者通过layout XML来创建。MapViewDemo.javaview sourceprint?01.import android.os.Bundle; 02.import com.autonavi.mapapi.GeoPoint; 03.import com.autonavi.mapapi.MapActivity; 04.import com.autonavi.mapapi.MapController; 05.import com.autonavi.mapapi.MapView; 06.07.public class MapViewDemo extends MapActivity 08.MapView mMapView; 09.MapController mMapController; 10.GeoPoint point; 11.Override12./* 13.*显示地图,启用内置缩放控件,并用MapController控制地图的中心点及Zoom级别 14.*/15.protectedvoidonCreate(Bundle savedInstanceState) 16./ TODO Auto-generated method stub 17.super.onCreate(savedInstanceState); 18.setContentView(R.layout.mapviewdemo); 19.mMapView = (MapView) findViewById(R.id.atmapsView); 20.mMapView.setBuiltInZoomControls(true); /设置启用内置的缩放控件 21.mMapController = mMapView.getController(); / 得到mMapView的控制权,可以用它控制和驱动平移和缩放 22.point = newGeoPoint(int) (39.90923 * 1E6), 23.(int) (116.397428 * 1E6); /用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) 24.mMapController.setCenter(point); /设置地图中心点 25.mMapController.setZoom(12); /设置地图zoom级别 26. 27.Mapviewdemo.xmlview sourceprint?01. 02.03. 07. 12. 13.图1:MapView 显示地图如何创建ItemizedOverlayItemizedOverlay是Overlay的一个基类,它包含了一个OverlayItems列表。 使用此类可以在地图上添加多个标记点,并且维护一个焦点选中的item,同时也负责把一个屏幕点击匹配到item上去,分发焦点改变事件给备选的监听器。view sourceprint?1.Drawable marker = getResources().getDrawable(R.drawable.poi_1); /得到需要标在地图上的资源 2.marker.setBounds(0, 0, marker.getIntrinsicWidth(), 3.marker.getIntrinsicHeight(); /为maker定义位置和边界 4.mMapView.getOverlays().add(newOverItemT(marker, this); /添加ItemizedOverlay实例到mMapViewview sourceprint?1.GeoList.add(newOverlayItem(p1, P1, point1); 2.GeoList.add(newOverlayItem(p2, P2, point2); 3.GeoList.add(newOverlayItem(p3, P3, point3); 4.populate(); /createItem(int)方法构造item。一旦有了数据,在调用其它方法前,首先调用这个方法view sourceprint?1.Projection projection = mapView.getProjection(); 2.for (int index = size() - 1; index = 0; index-) / 遍历GeoList 3.OverlayItem overLayItem = getItem(index); / 得到给定索引的item 4.String title = overLayItem.getTitle(); 5./ 把经纬度变换到相对于MapView左上角的屏幕像素坐标 6.Point point = projection.toPixels(overLayItem.getPoint(), null);view sourceprint?1.图2:显示标记点如何创建PoiSearchview sourceprint?01.try 02.PoiSearch poiSearch = new PoiSearch(POISearchDemo.this, 03.new PoiSearch.Query(苏州街, null); / 设置搜索字符串 04.PoiPagedResult result = poiSearch.searchPOI(); / 调用搜索POI方法 05.if (result.getPage(1).isEmpty() 06.Toast.makeText(getApplicationContext(), 没有找到!, 07.Toast.LENGTH_SHORT).show(); 08. else 09.PoiOverlay poiOverlay = newPoiOverlay(null, 10.result.getPage(1); / 将结果的第一页添加到PoiOverlay 11.mMapView.getOverlays().add(poiOverlay); / 将poiOverlay标注在地图上 12. 13. catch (IOException e) 14.Toast.makeText(getApplicationContext(), 网络连接错误!, 15.Toast.LENGTH_SHORT).show(); 16.view sourceprint?1.图3:地址搜索结果如何创建Geocoderview sourceprint?01.Geocoder mGeocoder01 = new Geocoder(GeocodingDemo.this); 02.int x = geo.getLatitudeE6(); / 得到geo纬度,单位微度 (度 * 1E6) 03.double x1 = (double) x) / 1000000; 04.int y = geo.getLongitudeE6(); / 得到geo经度,单位微度 (度 * 1E6) 05.double y1 = (double) y) / 1000000; 06.try 07./ 将 GPS数据偏转得到你逆理编码,参数分别为:纬度,经度,最大结果集 08.List lstAddress = mGeocoder01.getFromRawGpsLocation(x1, y1, 3); 09.if (!lstAddress.isEmpty() 10./ Toast输出geo编码得到的地名 11.for (int i = 0; i lstAddress.size(); +i) 12.Address adsLocation = lstAddress.get(i); 13.Toast.makeText(getApplicationContext(), 14.adsLocation.getFeatureName().toString(), 15.Toast.LENGTH_LONG).show(); 16.Log.i(TAG, Address found = + adsLocation.toString(); 17. 18. else 19.Log.i(TAG, Address GeoPoint NOT Found.); 20. 21. 22.catch(Exception e) 23.Toast.makeText(getApplicationContext(), 连接错误!, Toast.LENGTH_SHORT).show(); 24.view sourceprint?1.图4:经纬度如何创建MyLocation绘制用户当前在地图上的位置(精准度),和/或一个嵌入的指南针。子类能覆盖方法dispatchTap()去处理对当前位置的点击为了开启这个overlay的功能,需要去调用enableMyLocation()和/或enableCompass(), 或调用Activity中的Activity.onResume()方法关键代码view sourceprint?01.mylocTest = new MyLocationOverlay(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 何为有效培训
- 2024年广西军队文职(护理学)高频备考核心题库(含答案详解)
- 熔断器出口贸易策略-洞察及研究
- FastLink短连接快速传输技术的FastLink架构研究-洞察及研究
- 交通流实时动态仿真优化-洞察及研究
- 混合现实技能评估-洞察及研究
- 知识匮乏组织培训课件
- 数据封装环境适应性-洞察及研究
- 2025年电梯安全管理员考试题及参考答案
- 知识付费培训体系课件
- GB/T 3277-1991花纹钢板
- GA/T 486-2015城市道路单向交通组织原则
- 低空无人机遥感技术及应用课件
- 腹横肌平面阻滞课件
- UASB厌氧塔设计计算书
- 2009-2022历年江苏省镇江市丹阳市事业单位考试《综合知识和能力素质(会计审计类岗位)》真题含答案2022-2023上岸必备带详解版3
- 项目工作计划进度表Excel模板(推荐)
- 筷子兄弟小苹果电声乐队总谱
- 脓毒症的诊断和治疗进展ppt课件
- 部编版一年级语文上册表格式教案(教学设计)
- 动物防疫与检疫课程标准
评论
0/150
提交评论