android高德api的使用
- 格式:docx
- 大小:68.96 KB
- 文档页数:11
Android 应用的离线地图和导航开发指南Android 作为全球最受欢迎的移动操作系统之一,为开发人员提供了丰富的功能和 API,以开发各种创新的应用程序。
其中,离线地图和导航应用程序受到了广大用户的追捧。
本文将为您介绍如何进行Android 应用的离线地图和导航开发。
一、离线地图的基本原理在离线地图应用中,地图数据不需要实时从网络加载,而是事先下载到本地设备中的存储空间。
这样,即使在没有互联网连接的情况下,用户仍然可以使用地图功能。
主要步骤如下:1.选择合适的地图供应商:目前市面上有多个知名地图供应商,如Google 地图、百度地图、高德地图等。
根据应用需求,选择一个合适的供应商是至关重要的。
2.下载地图数据:地图供应商通常会提供相应的 API,开发者可以使用该 API 下载指定地区的地图数据。
下载后的地图数据通常会以离线地图包的形式保存。
3.本地地图数据存储:将下载好的地图包存储在设备的本地存储空间中。
可以选择将地图包保存在内部存储或者外部存储中,具体取决于应用需求和设备的可用空间。
4.离线地图数据读取:应用程序在需要使用地图时,从本地存储空间读取地图数据,并在地图控件中进行展示。
二、离线导航的基本原理除了离线地图,离线导航也是用户常用的功能之一。
离线导航应用允许用户在没有互联网连接的情况下获取准确的导航指引。
下面是离线导航的基本原理:1.导航路线规划:在离线导航中,应用程序需要事先下载导航路线数据。
用户输入起点和终点后,应用程序会根据事先下载的地图数据进行路线规划,并生成导航路线。
2.定位和转向提示:离线导航应用为用户提供实时的定位功能,通过设备内置的定位传感器获取用户的当前位置,并根据导航路线提供转向提示。
3.离线语音合成:为了在没有互联网连接的情况下提供导航语音提示,应用程序需要事先下载和保存离线语音合成数据。
当用户进行导航时,应用程序会根据导航路线提供相应的语音合成提示。
三、开发离线地图和导航应用的技术要点在进行 Android 应用的离线地图和导航开发时,需要掌握以下技术要点:1.文件管理和存储:了解如何在 Android 应用中进行文件管理和存储操作是必不可少的。
移动应用开发中的高德地图API使用指南随着移动应用的普及和发展,地图应用已经成为人们日常生活的必备工具。
在移动应用开发过程中,使用高德地图API能够为应用增加定位、导航、搜索等功能,提升用户体验。
本文将为大家介绍高德地图API的使用指南,帮助开发者更加灵活和高效地使用这一强大的工具。
一、高德地图API概述高德地图API(Application Programming Interface)是高德地图提供的一组开发接口,为开发者提供了访问高德地图底图、定位服务、导航服务等功能的能力。
开发者可以通过调用这些接口,将地图相关的功能集成到自己的移动应用中。
二、地图显示功能在移动应用中显示地图是最基本的功能之一。
使用高德地图API,开发者可以轻松地在应用中展示地图。
首先,开发者需要在高德开放平台注册一个开发者账号,并申请一个API Key,用于在应用中验证开发者身份。
接下来,可以使用API提供的地图展示接口,将地图显示在应用的指定位置。
开发者可以设置地图的中心点、缩放级别、地图类型等属性,以满足不同场景下的需求。
三、地理编码和逆地理编码通过地理编码和逆地理编码,开发者可以将地理坐标与地址信息进行转换。
地理编码是将地址转换为地理坐标的过程,逆地理编码则是将地理坐标转换为地址的过程。
使用高德地图API提供的接口,开发者可以根据用户提供的详细地址,获取对应的经纬度信息,并在地图上标注出来;或者根据用户提供的经纬度信息,获取对应的地址信息,并显示在应用中。
四、定位功能定位是移动应用中常见的功能需求之一。
高德地图API提供了定位服务接口,可以帮助应用获取用户的地理位置信息。
开发者可以通过调用接口,获得用户的经纬度、精确度等信息,并在地图上定位用户的当前位置。
同时,高德地图API还提供了地理围栏功能,可以实现对指定区域进行监控和提醒,为应用增加更多的定位功能。
五、导航功能导航是许多应用中不可或缺的功能之一。
高德地图API提供了多种导航接口,可以帮助应用实现步行、驾车、公交等不同方式的导航功能。
上午(理论)1.地图平台的基本背景知识2.MapABC-API简介●什么是MapABC-API●API的作用●地图展现操作API●搜索及空间应用API3.MapABC-API基础功能4.MapABC-API高级应用5.API的应用架构6.API的对象结构MMap,MMapOptions,MMarker,MPolyline等等。
7.如何在项目中使用API(嵌入地图)⏹嵌入地图的先决条件——KEY⏹引用API-JS文件。
8.Demo展示下午(实例)1.页面嵌入地图MMap的使用地图参数的获得地图参数的设置MMapOptions的设置2.地图加点MMarker类、MMarkerOptions类3.地图加线MPolyline类、MLineOptions类、MLineStyle类4.地图加面面基类:MArea类、MAreaOptions类、MFillStyle类、MAreaStyle类矩形、圆、多边形:MRectangle类、MCircle类、MPolygon类5.地图加各类TIP6.鼠标绘图7.添加专题图8.有关上周工作会议上谈及的高德培训现经安排定于本周三在上海高德开课请各位安排相关人员出席。
具体安排如下:9.10. l 时间:9月2日(本周三)一整天9:30开始11. l 地点:上海高德大会议室(淮海西路55号申通信息广场26楼E-H座靠近华山路路口)12.【小提示】:淮海西路和华山路口在修路开车来的请从幸福路、或法华镇路、或番禹路转进来。
13. l 议程具体请参考附件)14. 1. 高德地图平台基本知识;15. 2. 高德API二次开发应用;16. 3. 实战演练DEMO制作;17. l 培训师:王友光18. l 公司前台电话:52989158(如要问路可电话联系J)19.20.由于本人明天开始要休假一周所以现场有什么问题可随时与王友光联系。
谢谢!21.22.祝大家培训愉快!J和盛娱乐,和盛平台,和盛注册 t44i985P9Qf3友情提示:方案范本是经验性极强的领域,本范文无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用。
智能交通app开发教程(实例)
介绍
随着智能交通系统的不断发展,智能交通app的需求也在逐渐增加。
本文将介绍一个基于Android开发的智能交通app的实例,帮助读者了解如何进行智能交通app的开发。
技术架构
- Android开发技术
- Java语言
- 高德地图API
功能介绍
- 实时路况查询:通过调用高德地图API,获取摄像头位置及拍摄的路况照片,显示在地图上。
- 交通事故提醒:通过调用高德地图API,获取当地交通事故信息,并向用户发出提醒。
- 路线规划:用户输入起点、终点后,利用高德地图API计算最优路径,并显示在地图上。
开发流程
1. 确定app功能及技术架构。
2. 搭建开发环境,配置Android开发环境及高德地图API环境。
3. 进行UI设计,包括地图UI、路线规划UI、交通事故提醒
UI等。
4. 进行编码,包括UI布局和逻辑处理。
5. 进行调试,修复Bug。
6. 进行优化,增强app的性能和稳定性。
7. 发布上线。
结论
本文介绍了一个基于Android开发的智能交通app的实例,希
望读者可以通过本文了解到智能交通app的开发流程和技术开发细节,为读者日后的app开发提供一定的帮助。
高德移动导航使用手册Android版《高德移动导航软件用户手册》及其配套系统软件的版权属本公司所有,受中华人民共和国法律保护,未获高德软件有限公司明确的书面许可,任何人或单位不得对本软件的全部或部分内容进行复制或将其存储在数据库中,不得进行电子、机械或其他方式的影印、拷贝或备份,不得通过载声体或其他任何方式进行复制。
本文件所包含的信息可能更改,事先恕不另行通知。
免责声明《高德移动导航软件用户手册》是由高德软件有限公司编制,旨在为用户提供一个使用手机导航系统的信息指引。
在编制过程中,本公司尽可能确保手册中所有内容(包括文字、图形、图标等)的准确性和完整性,但本公司对手册内容的准确性和完整性不作任何保证。
本手册的内容仅供参考,对于用户使用本手册带来的任何后果和损失,本公司概不负责。
用户一经购买使用《高德移动导航软件》,即表示同意本公司对于用户在使用本系统时所发生的任何直接或间接的损失一概免责。
本声明解释权归高德软件有限公司,如有争议,以中华人民共和国现行有效的法规法律为依据。
高德软件有限公司重要提示感谢您购买本产品!为了实现您对本产品的安全和有效使用,本公司向您进行特别提示如下:1、本产品电子地图及路口语音提示仅供参考,可能与实际路况有所不同,请在遵守实地交通规则的前提下使用本系统,按照实际路况驾驶。
3、GPS定位与天气、环境及接收器等各因素相关,本系统不保证定位完全准确,请结合其他信息判断。
4、实际导航中请勿以本系统为唯一参考依据,因使用本系统而产生的直接的、间接的、连带的、特殊的后果由用户自行承担,系统设计者和生产者不负任何责任。
5、禁止非法拷贝、反编译、破解或传播本系统。
安装说明一、安装地图数据说明:手机内应用程序可见“高德导航”的图标,表明已经预置高德导航apk,运行程序时提示缺失数据。
操作步骤:(1)通过网站下载地图数据“autonavidata50.zip”并解压缩;(2)将“autonavidata50”文件夹存储至的后继内存的根目录下;(3)运行导航程序即可。
{售后服务}高德服务接口说明新版
高德地图作为国内领先的地理信息服务提供商,不仅提供了精准的地图数据和导航服务,还为用户提供了完善的售后服务。
下面将对高德地图的售后服务接口进行详细的说明。
3.技术支持API:高德地图为开发者提供了专门的技术支持API,用户可以通过该接口获取高德地图开发者平台的技术支持信息。
用户可以了解到最新的技术文档、开发指南、常见问题及解决方案等,以帮助开发者解决技术上的问题。
4.问题反馈API:用户使用高德地图产品时,遇到问题可以通过问题反馈API进行反馈。
用户可以描述问题的具体内容和出现的情况,并提供相应的截图或录像等辅助材料。
高德地图的技术人员会仔细分析用户的问题,并尽快给出解决方案或回复。
5.帮助中心API:高德地图还提供了帮助中心API,用户可以通过该接口获取到高德地图的帮助中心的相关信息。
帮助中心包括了各类教程、常见问题及解答、使用说明等,用户可以根据需要查阅相关的帮助文档,解决自己的问题。
6.售后服务投诉API:如果用户对高德地图的售后服务不满意,可以通过售后服务投诉API进行投诉。
用户可以详细描述投诉的内容和原因,高德地图将会尽快处理用户的投诉,并采取相应的措施改进售后服务。
使用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, 邮箱:mapservice@)为什么要使用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街区图和其他的个性化地理数据支持。
⾼德地图API获取天⽓1.建⽴⾏政区规划清单表use edw;drop table if exists dim_prov_city_adcode;create table if not exists dim_prov_city_adcode (prov_nm varchar(64),city_nm varchar(64),county_nm varchar(64),prov_code varchar(64),county_code varchar(64),adcode varchar(64),alias_nm varchar(64)) ENGINE=InnoDB default CHARSET=utf8;--alter table dim_prov_city_adcode add primary key(adcode);alter table dim_prov_city_adcode COMMENT '⾏政区划清单表';alter table dim_prov_city_adcode modify column prov_nm varchar(64) COMMENT '省份、直辖市名称';alter table dim_prov_city_adcode modify column city_nm varchar(64) COMMENT '城市名称';alter table dim_prov_city_adcode modify column county_nm varchar(64) COMMENT '区域名称';alter table dim_prov_city_adcode modify column prov_code varchar(64) COMMENT '省GB码';alter table dim_prov_city_adcode modify column county_code varchar(64) COMMENT '市GB码';alter table dim_prov_city_adcode modify column adcode varchar(64) COMMENT '参考GB码(adcode)';alter table dim_prov_city_adcode modify column alias_nm varchar(64) COMMENT '别名';2.插⼊⾏政区规划清单表数据3.建⽴天⽓数据表create table if not exists fact_weather_adcode_day(province varchar(64) comment '省份名',city varchar(64) comment '城市名',adcode varchar(64) comment '区域编码',weather varchar(64) comment '天⽓现象(汉字描述)',temperature float comment '实时⽓温',winddirection varchar(64) comment '风向',windpower varchar(64) comment '风⼒',humidity varchar(64) comment '空⽓湿度',reporttime varchar(64) comment '发布时间',date_id varchar(64) comment '⽇期',hour_id varchar(64) comment '⼩时')ENGINE=InnoDB default CHARSET=utf8;alter table fact_weather_adcode_day add primary key(adcode,date_id,hour_id);3.开发Python脚本调⽤API获取数据#coding:utf8#------------------------------------------------------#Filename: getWeather.py#Revision: 1.0#Date: 2018/08/17#Author: Jim#Description:#Notes: 通过调⽤⾼德API获取天⽓数据#key: 6ca7b720f2ab2a48f749c1e19c3d1c47#⾼德API相关⽂档: https:///api/#获取天⽓: https:///v3/weather/weatherInfo?city=110101&key=<⽤户key># 如:https:///v3/weather/weatherInfo?city=110101&key=6ca7b720f2ab2a48f749c1e19c3d1c47#------------------------------------------------------import time, re, os, sys, time,urllib2,shutil,stringimport json,datetime,MySQLdbfrom dateutil.parser import parse#设置utf-8编码格式reload(sys)sys.setdefaultencoding( "utf-8" )#获取当前⽇期的前n天def getbeforeDay(n=0):now_time = datetime.datetime.now()beforeday = now_time - datetime.timedelta(n)return beforeday.strftime("%Y%m%d")scriptDir = os.getcwd()if len(sys.argv) > 1 :job_date_id = sys.argv[1]else :job_date_id = getbeforeDay(0)print"当前脚本路径:%s,当前参数⽇期:%s" % (scriptDir,job_date_id)#保存数据到⽂件⽂件def saveContext(filename,*name):format = '^'dev_prd_flag = 'prd'context = name[0]for i in name[1:]:context = context + format + str(i)context = str(context).replace('(','(').replace(')',')').replace(',',',').replace(':',':')if dev_prd_flag != 'prd':print context#去除⽂件路径名⾸位空格filename = filename.strip()#读取⽬录名称path = os.path.dirname(filename)#如果⽬录不存在则创建⽬录if not os.path.exists(path):os.makedirs(path)#读取⽂件名称,以追加的⽅式写⽂件name = os.path.basename(filename)fp = open(filename,'a')fp.write(context+'\n')fp.close()#获取⽹页⽂件def getHtml(url,code='utf-8'):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER' }request = urllib2.Request(url,headers=headers)response = urllib2.urlopen(request,data=None,timeout=60)html = unicode(response.read(),str(code))return htmlclass ConMysql():def__init__(self,host='192.168.122.140',user='shutong',passwd='shutong',db='edw'):print"连接mysql数据库"try:conn= MySQLdb.connect(host= host,port = 3306,user=user,passwd=passwd,db =db,charset='utf8',)self.conn = connprint"连接mysql成功"except :print"连接mysql失败"def execSQL(self,sql):print"执⾏语句:%s" % (sql)cur = self.conn.cursor()cur.execute('set character_set_client = utf8')cur.execute('set character_set_server = utf8')cur.execute('set character_set_connection = utf8')cur.execute('set character_set_results = utf8')cur.execute('set collation_connection = utf8_general_ci')cur.execute('set collation_server = utf8_general_ci')result = cur.fetchmany(cur.execute(sql))cur.close()mit()return result'''析构⽅法'''def__del__(self):if self.conn:self.conn.close()else:passadcode = "110000"key = "6ca7b720f2ab2a48f749c1e19c3d1c47"def crawl_weather(adcode):url = "https:///v3/weather/weatherInfo?city=%s&key=%s" % (adcode,key)html = getHtml(url)jsondata = json.loads(html)#省份province = jsondata['lives'][0]['province']#市city = jsondata['lives'][0]['province']#区域编码adcode = jsondata['lives'][0]['adcode']#天⽓现象weather = jsondata['lives'][0]['weather']#实时⽓温摄⽒度temperature = jsondata['lives'][0]['temperature']#风向winddirection = jsondata['lives'][0]['winddirection']#风⼒windpower = jsondata['lives'][0]['windpower']#空⽓湿度humidity = jsondata['lives'][0]['humidity']#数据发布时间reporttime = jsondata['lives'][0]['reporttime']#⽇期date_id = parse(reporttime).strftime('%Y%m%d')#⼩时hour_id = parse(reporttime).strftime('%H')print province,city,adcode,weather,temperature,winddirection,windpower,humidity,reporttime,date_id,hour_idsql = "insert ignore into fact_weather_adcode_day values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');" % (province,city,adcode,weather,temperature,winddirection,windpower,humidity,reporttime,date_id,hour_id)print sqlconn.execSQL(sql) conn = ConMysql() crawl_weather(adcode)。
⾼德地图API,获取和设置zoom级别和中⼼点双击可以调整⾼德地图的级别zoom 改变初始地图的级别,zoom值越⾼,相当于⿏标双击放⼤,内容越详细,范围越⼩center 改变初始地图的中⼼点,是⼀个数组,包含经纬度<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }</style></head><body><div id="container"></div><script>new AMap.Map("container",{zoom:12,//初始化地图级别center:[120,30]//初始化地图中⼼点});</script></body></html>getZoom() 获取级别getCenter() getCenter().toString() 获取中⼼点<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }</style></head><body><div id="container"></div><script>var map=new AMap.Map("container");console.log(map.getZoom());//获取级别console.log(map.getCenter());//获取中⼼点console.log(map.getCenter().toString());</script></body></html>on("moveend") 监听移动停⽌事件<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }</style></head><body><div id="container"></div><script>var map=new AMap.Map("container");map.on("moveend",function(){console.log(map.getZoom());//获取级别console.log(map.getCenter().toString());//获取中⼼点})</script></body></html>on("zoomend") 双击结束事件,改变级别事件<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }</style></head><body><div id="container"></div><script>var map=new AMap.Map("container");map.on("zoomend",function(){console.log(map.getZoom());//获取级别console.log(map.getCenter().toString());//获取中⼼点})</script></body></html>setZoom() 设置地图级别<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }</style></head><body><div id="container"></div><script>var map=new AMap.Map("container");//设置地图级别setTimeout(function(){map.setZoom(15);},3000);</script></body></html>通过事件设置zoom<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }#setZoomNode{width:300px;height:100px;background-color: #fff;border:1px solid;box-shadow:0 0 5px #000;top:20px;right:20px;position: absolute;} </style></head><body><div id="container"></div><div id="setZoomNode"><input type="text" id="zoomVal"><button id="zoomBtn">设置zoom</button></div><script>var map=new AMap.Map("container");//设置地图级别zoomBtn.onclick=function(){map.setZoom(zoomVal.value);}</script></body></html>setCenter([ ]) 设置地图中⼼点<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }#setZoomNode{width:300px;height:100px;background-color: #fff;border:1px solid;box-shadow:0 0 5px #000;top:20px;right:20px;position: absolute;} </style></head><body><div id="container"></div><script>var map=new AMap.Map("container");//设置地图中⼼点setTimeout(function(){map.setCenter([121.11,30]);},1000);</script></body></html>通过事件设置地图中⼼点<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }#setCenterNode{width:300px;height:100px;background-color: #fff;border:1px solid;box-shadow:0 0 5px #000;top:20px;right:20px;position: absolute;} </style></head><body><div id="container"></div><div id="setCenterNode">x <input type="text" id="xVal"><br>y <input type="text" id="yVal"><br><button id="btn">设置中⼼点</button></div><script>var map=new AMap.Map("container");//设置地图中⼼点btn.onclick=function(){map.setCenter([xVal.value,yVal.value]);}</script></body></html>setZoomAndCenter 同时设置zoom和center<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>map</title><script type="text/javascript" src="https:///maps?v=1.4.15&key=ce3b1a3a7e67fc75810ce1ba1f83c01a"></script><style>*{margin:0;padding:0;}#container {width:100%; height: 100%;top:0;left:0;position: absolute; }#setZoomNode{width:300px;height:100px;background-color: #fff;border:1px solid;box-shadow:0 0 5px #000;top:20px;right:20px;position: absolute;} </style></head><body><div id="container"></div><div id="setZoomNode">级别<input type="text" id="zoomVal"><br>中⼼点x <input type="text" id="xVal"><br>中⼼点y <input type="text" id="yVal"><br><button id="btn">设置中⼼点和zoom</button></div><script>var map=new AMap.Map("container");//设置地图中⼼点btn.onclick=function(){map.setZoomAndCenter(zoomVal.value,[xVal.value,yVal.value]);}</script></body></html>。
⾼德地图api之location定位关于定位,分为GPS定位和⽹络定位。
本⽂将详细描述的浏览器定位,属于⽹络定位。
这是⼀种通过使⽤⾼德JS-API来实现位置定位、城市定位的⽅法,包含了IP定位,检索等多种⽹络定位⽅式。
如果您的⼿机⽀持GPS功能,能够⾃动获取GPS信息,定位将更加准确。
浏览器定位浏览器定位插件,封装了标准的HTML5定位,并含纠正模块,同时该定位⽅式仅适⽤于⽀持HTML5的浏览器上,如Internet Explorer 9、Firefox、Chrome、Safari 以及 Opera等。
代码如下:/*** Created by ly-wangweiq on 2015/7/29.* * support mobile*///⽤户位置定位使⽤geolocation定位var mMap=function(){function rad(d){return d*Math.PI/180.0;}this.map={},this.geolocation={},this.k=0,//加载地图,调⽤浏览器定位服务this.initMap=function(mapContainer,completFunc){if(typeof(AMap)=="object"){this.map = new AMap.Map(mapContainer, {resizeEnable: true});this.map.plugin('AMap.Geolocation', function () {this.geolocation = new AMap.Geolocation({enableHighAccuracy: true,//是否使⽤⾼精度定位,默认:truetimeout: 10000, //超过10秒后停⽌定位,默认:⽆穷⼤maximumAge: 0, //定位结果缓存0毫秒,默认:0convert: true, //⾃动偏移坐标,偏移后的坐标为⾼德坐标,默认:trueshowButton: true, //显⽰定位按钮,默认:truebuttonPosition: 'LB', //定位按钮停靠位置,默认:'LB',左下⾓buttonOffset: new AMap.Pixel(10, 20),//定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)showMarker: true, //定位成功后在定位到的位置显⽰点标记,默认:trueshowCircle: true, //定位成功后⽤圆圈表⽰定位精度范围,默认:truepanToLocation: true, //定位成功后将定位到的位置作为地图中⼼点,默认:truezoomToAccuracy:true //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false});this.map.addControl(this.geolocation);AMap.event.addListener(this.geolocation, 'complete', onComplete);//返回定位信息AMap.event.addListener(this.geolocation, 'error', onError); //返回定位出错信息});function onComplete(data){console.log(completFunc)console.log(data)if(completFunc){completFunc(data);}}function onError(){var str = '定位失败,';str += '错误信息:'switch() {case 'PERMISSION_DENIED':str += '浏览器阻⽌了定位操作';break;case 'POSITION_UNAVAILBLE':str += '⽆法获得当前位置';break;case 'TIMEOUT':str += '定位超时';break;default:str += '未知错误';break;}alert(str)}}},this.getCurrentPosition=function(callback){if(typeof(this.geolocation.getCurrentPosition)!='undefined'){this.geolocation.getCurrentPosition();}else{setTimeout(function(){//将获得的经纬度信息,放⼊sessionStorgethis.getSessionLocation(callback)},200)}},this.distance = function(obj1,obj2){//return:mvar lng=new AMap.LngLat(obj1.lng, t);var lag=new AMap.LngLat(obj2.lng, t);var ss=lng.distance(lag);return ss;},this.getSessionLocation=function(callback){if(sessionStorage.getItem('location')){callback();}else{this.initMap('',function(data){sessionStorage.setItem("location",JSON.stringify(data))callback();});this.getCurrentPosition(callback);}},/**两点之间的距离*(t1)地址⼀的经纬度*(t2)地址⼀的经纬度*单位⽶*/this.serverDistance = function(obj1,obj2){//return:mvar radLat1 = rad(t);var radLat2 = rad(t);var a = radLat1 - radLat2;var b = rad(obj1.lng)- rad(obj2.lng);var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));s = s *6378137;s = Math.round(s * 10000)/10000 ;return s;}return this;}();这⾥将定位获取的信息存⼊sessionStorge中,这样只需要⾸次访问时,需要定位,之后都可以从sessionStorge中得到,⼤⼤提⾼了速度。
⾼德地图详细使⽤⽅法1.简单定位- (void)viewDidLoad {[super viewDidLoad];_mapView.showsUserLocation = YES;[_mapView setUserTrackingMode:MAUserTrackingModeFollow];}- (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation {NSLog(@"定位中...");}View Code2.创建⼤头针#import"AnnotationViewController.h"@interface AnnotationViewController ()@end@implementation AnnotationViewController- (void)viewDidLoad {[super viewDidLoad];MAPointAnnotation *annotation1 = [[MAPointAnnotation alloc]init];annotation1.coordinate = CLLocationCoordinate2DMake(39.9, 116.4);annotation1.title = @"北京";annotation1.subtitle = @"beijing";[_mapView addAnnotation:annotation1];MAPointAnnotation *annotation2 = [[MAPointAnnotation alloc]init];annotation2.coordinate = CLLocationCoordinate2DMake(39.94, 116.44);annotation2.title = @"上海";annotation2.subtitle = @"shanghai";[_mapView addAnnotation:annotation2];}- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation{static NSString *anIde = @"PointAnnotation";MAAnnotationView *view = (MAAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:anIde];if (!view) {view = [[MAAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:anIde];// view.animatesDrop=YES;view.draggable=YES;view.image = [UIImage imageNamed:@"1.png"];view.canShowCallout = YES;}return view;}- (void)mapView:(MAMapView *)mapView didDeselectAnnotationView:(MAAnnotationView *)view{}- (void)mapView:(MAMapView *)mapView didSelectAnnotationView:(MAAnnotationView *)view{}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.}@endView Code3.⾃定制⼤头针(实现MAAnnotation代理)#import <Foundation/Foundation.h>#import <MAMapKit/MAMapKit.h>@interface CustomAnnotation : NSObject<MAAnnotation>@property (nonatomic, assign) CLLocationCoordinate2D coordinate;@property (nonatomic,copy) NSString *title;@property (nonatomic,copy) NSString *subtitle;//@property (nonatomic,copy) NSString *leftImgName;@endView Code4.⾃定制⼤头针内容(继承MAAnnotationView)#import"CustomAnnotationView.h"@implementation CustomAnnotationView{DetailView *_detail;}/*// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect {// Drawing code}*/- (void)setSelected:(BOOL)selected animated:(BOOL)animated{if (self.selected == selected) {return;}//选中添加详情if (selected){if (!_detail) {_detail = [[DetailView alloc]initWithFrame:CGRectMake((-140+40)/2, -50, 140, 50)]; }[self addSubview:_detail];CustomAnnotation *annotation = self.annotation;_detail.leftImgView.image = [UIImage imageNamed:annotation.leftImgName];_detail.titleLabel.text = annotation.title;_detail.subtitleLabel.text = annotation.subtitle;}//未选中时else{//移除详情[_detail removeFromSuperview];}[super setSelected:selected animated:animated];}@endView Code5.使⽤⾼德地图部分⽅法#import"CustomAnnotationViewController.h"#import"CustomAnnotationView.h"#import <AMapSearchKit/AMapSearchAPI.h>@interface CustomAnnotationViewController ()<AMapSearchDelegate>{AMapSearchAPI *_searchApi;}@endconst static NSString *key = @"d0ab6d8ab6902765f6714c1534b4d4a0";@implementation CustomAnnotationViewController- (void)viewDidLoad {[super viewDidLoad];CustomAnnotation *ann = [[CustomAnnotation alloc]init];ann.coordinate = CLLocationCoordinate2DMake(39.9, 116.4);ann.title = @"肯德基";ann.subtitle = @"KFC";ann.leftImgName = @"3.png";[_mapView addAnnotation:ann];MACircle *circle = [MACircle circleWithCenterCoordinate:ann.coordinate radius:3000];[_mapView addOverlay:circle];//搜索附近的kfc_searchApi = [[AMapSearchAPI alloc]initWithSearchKey:key Delegate:self];//创建request对象AMapPlaceSearchRequest *request = [[AMapPlaceSearchRequest alloc]init];//指定searchtype为周边搜索request.searchType = AMapSearchType_PlaceAround;//指定搜索附近的中⼼点位置request.location = [AMapGeoPoint locationWithLatitude:titude longitude:ann.coordinate.longitude];//指定搜索半径request.radius = 3000;//关键字request.keywords = @"KFC";[_searchApi AMapPlaceSearch:request];//// AMapPlaceSearchRequest *request1 = [[AMapPlaceSearchRequest alloc]init];// request1.keywords = @"俏江南";// request1.city = @[@"beijing"];// [_searchApi AMapPlaceSearch:request1];}- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation{if ([annotation isKindOfClass:[MAPointAnnotation class]]) {static NSString *annIde = @"PointAnnotation";MAPinAnnotationView *view = (MAPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annIde];if (!view) {view = [[MAPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annIde];view.canShowCallout = YES;}return view;}static NSString *annIde = @"CustomAnnotation";CustomAnnotationView *view = (CustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annIde];if (!view) {view = [[CustomAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annIde];}view.image = [UIImage imageNamed:@"1.png"];return view;}- (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id<MAOverlay>)overlay{MACircleRenderer *circleRe = [[MACircleRenderer alloc]initWithOverlay:overlay];circleRe.strokeColor = [UIColor redColor];circleRe.fillColor = [UIColor colorWithWhite:0.2 alpha:0.4];circleRe.lineWidth = 5;return circleRe;}- (void)mapView:(MAMapView *)mapView didSelectAnnotationView:(MAAnnotationView *)view{//导航查询AMapNavigationSearchRequest *request = [[AMapNavigationSearchRequest alloc]init];request.searchType = AMapSearchType_NaviDrive;//起点request.origin = [AMapGeoPoint locationWithLatitude:39.9 longitude:116.4];//终点request.destination = [AMapGeoPoint locationWithLatitude:[view.annotation coordinate].latitude longitude:[view.annotation coordinate].longitude]; [_searchApi AMapNavigationSearch:request];}- (void)onNavigationSearchDone:(AMapNavigationSearchRequest *)request response:(AMapNavigationSearchResponse *)response{AMapRoute *route = response.route;NSArray *paths = route.paths;for (AMapPath *path in paths) {for (AMapStep *step in path.steps) {NSLog(@"%@",step.instruction);}}}- (void)onPlaceSearchDone:(AMapPlaceSearchRequest *)request response:(AMapPlaceSearchResponse *)response{if (!response.count) {return;}//遍历搜索结果,创建annotation,显⽰搜索结果for (AMapPOI *poi in response.pois) {MAPointAnnotation *annotation = [[MAPointAnnotation alloc]init];annotation.coordinate = CLLocationCoordinate2DMake(titude, poi.location.longitude); annotation.title = ;annotation.subtitle = poi.tel;[_mapView addAnnotation:annotation];}}- (void)searchRequest:(id)request didFailWithError:(NSError *)error{NSLog(@"%@",error);}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.}@endView Code。
安卓高德地图课程设计一、课程目标知识目标:1. 理解并掌握安卓开发环境的基本使用方法,熟悉高德地图Android SDK的基本功能;2. 学会使用高德地图进行位置展示、地图缩放、图层切换等基本操作;3. 掌握在安卓应用中调用高德地图API进行定位、搜索周边信息、规划路径等功能的实现方法。
技能目标:1. 能够独立搭建安卓开发环境,创建并运行安卓项目;2. 能够运用高德地图Android SDK实现地图的基本功能,并在实际项目中灵活运用;3. 能够通过调用高德地图API,实现定位、搜索和路径规划等功能,提高解决问题的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发他们探索未知、创新实践的精神;2. 培养学生合作学习的意识,提高团队协作能力;3. 增强学生对我国地理信息的认识,提高国家意识。
课程性质:本课程为实践性较强的课程,旨在帮助学生将所学理论知识应用于实际项目中,提高解决实际问题的能力。
学生特点:学生具备一定的编程基础,对安卓开发和地图应用有一定的了解,但实际操作能力较弱。
教学要求:教师需结合学生特点,采用循序渐进的教学方法,注重理论与实践相结合,确保学生能够掌握课程内容,并能够将所学知识应用于实际项目中。
通过课程学习,使学生达到上述课程目标,提高综合素质。
二、教学内容1. 安卓开发环境搭建:介绍Android Studio的安装与配置,指导学生搭建开发环境,熟悉安卓项目结构。
- 教材章节:第1章 安卓开发基础2. 高德地图Android SDK入门:讲解SDK的导入与配置,学习地图的基本操作,如地图显示、缩放、旋转等。
- 教材章节:第2章 高德地图Android SDK入门3. 地图定位功能实现:学习使用高德地图定位SDK,实现实时定位功能。
- 教材章节:第3章 定位功能4. 周边信息搜索:学习使用高德地图API进行周边信息搜索,如加油站、餐厅等。
- 教材章节:第4章 周边搜索5. 路径规划与导航:学习使用高德地图路径规划API,实现起点到终点的路径规划功能。
⾼德地图SDK使⽤经验下⽂说的是⾼德地图 Android SDK版本,详细版本如下:2D地图:v2.3.1定位:v1.3.0导航:v1.1.1发现的问题如下,其中⼀些疑是地图BUG,⼀些是需要你⾃⼰⼩⼼的地⽅:1、定位。
public void requestLocationData(ng.String provider,long minTime,float minDistance,listener)对于第⼆个参数,会影响所有回调接⼝的回调时间。
官⽅的邮件回复是说,会以传⼊的第⼆个参数的最⼤的那个数,作为回调时间。
也就是,如果你在某个地⽅调⽤此接⼝,设置⼀分钟回调⼀次,requestLocationData(xxx, 60 * 1000, xx, xxxlistener),⽽在地图中,对定位按钮添加事件:requestLocationData(xxx, -1, xx, xxxxxlistener),那么这个定位事件会在1分钟之后才回调。
如果你有定时更新定位的需求的话,⾃⼰写计时器吧。
影响:较⼤。
2、⽐例尺。
如果你不调⽤此接⼝:mUiSettings.setScaleControlsEnabled(true);那么会有以下结果:两指缩放地图,会显⽰出⽐例尺,并且⽐例尺会随着地图变化。
双击,或者点击缩放按钮进⾏地图缩放的话,不会使⽐例尺出现。
⽽如果⽐例尺出现的话,也不会因此随着地图⽽变化。
基于以上结果,导致⽐例尺与实际不符。
对此问题,官⽅邮件回复中确定为已知问题。
解决⽅法,很简单,⼿动设置为true或false就⾏。
影响:极⼩。
3、显⽰infowindow。
在添加Marker的时候,⼀定要对MarkerOptions设置anchor和title,否则不能显⽰InfoWindow。
此问题纠结了我许久,最后在与demo的代码进⾏⼏乎逐⾏对⽐之后,加上了这⾏代码后才显⽰出来infowindow。
影响:⾃⼰⼩⼼。
高德地图API使用手册现如今,随着科技的发展和移动互联网的流行,人们越来越依赖地图进行出行导航、生活周边搜索等方面。
而高德地图作为国内领先的移动地图导航,其API应用已经成为众多企业和开发者不可或缺的技术支持。
本篇文章将针对高德地图API的使用手册进行详细介绍,包括开发环境搭建、API 功能介绍、接口使用注意事项等方面。
一、开发环境搭建1.官方开发文档在开始使用高德地图API之前,首先需要参照高德官方的开发文档进行环境搭建和申请API秘钥。
高德官方提供的开发文档中包括了API的调用方式、参数说明、返回结果等信息,可以有效地帮助开发者快速掌握API应用。
2.秘钥申请在申请高德地图API秘钥时,需要提供调用API的应用包名、SHA1值等信息。
因此,在进行秘钥申请前,需要进行相应的开发环境搭建,包括AndroidStudio、Java SDK等软件的安装与设置。
如果开发者使用的是高德地图SDK,可以直接将秘钥添加到Manifest中进行调用。
二、API功能介绍1.地理编码地理编码是将地球表面的地址描述转换成经纬度坐标的过程。
高德地图API提供的地理编码服务,可以根据用户提供的地址信息,返回对应的经纬度坐标。
2.逆地理编码逆地理编码是将经纬度坐标转换成对应的地址信息的过程。
高德地图API 提供的逆地理编码服务,可以通过提供的经纬度坐标,返回对应的地址信息。
3.路径规划路径规划是指根据出发点和目的地,通过综合考虑多种交通工具(包括步行、公交、驾车等),计算出最优化的出行路线。
高德地图API提供的路径规划服务,可以根据出发点和目的地,以及出行方式(步行、公交、驾车等)等信息,返回最优化的出行路线。
4.POI搜索POI即“Point of Interest”,即兴趣点,是指特定地点的信息,例如商店、公园、医院等。
高德地图API提供的POI搜索服务,可以根据关键词、城市等信息,返回对应地点的POI信息。
5.天气查询天气查询是指根据城市名称、经纬度等信息,查询指定地点的天气状况。
高德API的使用Ps: demo具体实现了1.定位;2.自定义位置小蓝点(弃系统提供的);3.点击地图弹marker;4.点marker弹infowindow,infowindow包括3块,点击1弹dialog输入兴趣点搜附近,点击2查看具体信息,点击3跳转到路线查询界面(默认从兴趣点到当前位置)开发过程如下:1.进入高德官网申请map api key ,这一步不能少,否则无法获取地图。
像百度也需要。
2.在Manifest中添加必要权限:<uses-permission android:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permissionandroid:name="android.permission.CHANGE_CONFIGURATION"/>---------------------------------------------分割线-------------------------------------------3.代码具体实现过程:A.导入jar包:从官网下载最新的jarB.在Main.xml中添加fragment用来显示地图。
<fragmentandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="fill_parent"class="com.amap.api.maps.SupportMapFragment"/>---------------------------------------------分割线-------------------------------------------C.MainActivity继承FragmentActivity,使用以下代码来初始化地图以及对地图添加监听,启动定位等操作:if (aMap == null) {aMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();//获取地图实例if (aMap!=null) {setCenterPoi();//最初显示的可视区域setUpMap();//显示系统定位小蓝点setMapListener();//对aMap添加监听器}}---------------------------------------------分割线------------------------------------------- 上述代码中的3个方法如下:private void setCenterPoi(){LatLng latLng=new LatLng(31.23, 121.47);//默认城市经纬度CameraPosition position=new CameraPosition(latLng,9, 0, 0);//相机位置,参数分别代表经纬度坐标,地图缩放级别4-20,可视区域倾斜角0-45°,可视区域指向的方向,以角度为单位,正北方向到地图方向逆时针旋转的角度0-360°CameraUpdate cameraUpdate=CameraUpdateFactory.newCameraPosition(position);//定义了一个可视区域的移动,具体参考apiaMap.moveCamera(cameraUpdate);//移动相机到可视区域}---------------------------------------------分割线------------------------------------------- private void setUpMap() {// 自定义系统定位小蓝点MyLocationStyle myLocationStyle = new MyLocationStyle();myLocationStyle.myLocationIcon(BitmapDescriptorFactory .fromResource(R.drawable.location_marker));myLocationStyle.strokeColor(Color.BLUE);myLocationStyle.strokeWidth(1);aMap.setMyLocationStyle(myLocationStyle);mAMapLocManager= LocationManagerProxy.getInstance(this);aMap.setLocationSource(this);//提供位置数据,必须实现LocationSource接口,里面有两个方法:启动和销毁,具体详情见下文。
aMap.setMyLocationEnabled(true);// 设置为true表示系统定位按钮显示并响应点击,false表示隐藏,默认是false}---------------------------------------------分割线-------------------------------------------监听器里的具体操作,可以自己完成。
private void setMapListener(){aMap.setOnMapClickListener(new OnMapClickListener() {……});aMap.setOnMarkerClickListener(new OnMarkerClickListener() {……});aMap.setInfoWindowAdapter(new InfoWindowAdapter() {//个性化定制信息窗口marker对象@Overridepublic View getInfoWindow(final Marker marker) {……} aMap.setOnInfoWindowClickListener(newOnInfoWindowClickListener() {……});}---------------------------------------------分割线-------------------------------------------Ⅰ.上面setUpMap()方法代码中提到LocationSource接口两个方法,下面是具体实现:@Overridepublic void activate(OnLocationChangedListener arg0) { mListener = arg0;// OnLocationChangedListener接口用于获取位置改变信息if (mAMapLocManager == null) {mAMapLocManager = LocationManagerProxy.getInstance(this); }// LocationManagerProxy mAMapLocManager定位服务类。
这个定位类允许应用定时更新获取设备的地理位置,或者当这个设备进入指定的地理位置时,启动一个应用指定的Intent。
mAMapLocManager.requestLocationUpdates(LocationProviderP roxy.AMapNetwork, 5000*3, 20, this);//注册监听,参数依次代表:注册监听的provider 名称,位置变化的通知时间,位置变化通知的距离,AMapLocationListener(MainActivity实现的接口:当位置改变时接收LocationManagerProxy 发来的信息提示。
如果AMapLocationListener 已经使用LocationManagerProxy 的requestLocationUpdates(String, long,float, AMapLocationListener) 方法进行了注册,那么它的方法才能被调用。
)}/**释放资源*/@Overridepublic void deactivate() {mListener = null;if (mAMapLocManager != null) {mAMapLocManager.removeUpdates(this);mAMapLocManager.destory();}mAMapLocManager = null;}---------------------------------------------分割线-------------------------------------------Ⅱ.上面代码中包含的AMapLocationListener接口,所实现的方法(只需一个,包含低版本的方法均已废弃):@Overridepublic void onLocationChanged(AMapLocation location) {// if (mListener != null) {// 位置改变递归调用// mListener.onLocationChanged(location);// }/**通过返回的location可以获取具体的位置信息,由于该方法是异步的,*主线程需要的位置信息需要通过消息队列传递*/if (location != null) {Double geoLat = location.getLatitude();Double geoLng = location.getLongitude();String cityCode = "";String desc = "";Bundle locBundle = location.getExtras();if (locBundle != null) {cityCode = locBundle.getString("citycode");desc = locBundle.getString("desc");System.out.println("bundlekey=="+locBundle.keySet());}String str = ("定位成功:(" + geoLng + "," + geoLat + ")"+ "\n精度 :" + location.getAccuracy() + "米"+ "\n定位方式:" + location.getProvider() + "\n 城市编码:"+ cityCode + "\n位置描述:" + desc+ "\n定位时间:"+new SimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(new Date(location.getTime()))+"\n省:"+ location.getProvince() + "\n市:" + location.getCity()+ "\n区(县):" + location.getDistrict() + "\n城市编码:"+ location.getCityCode() + "\n区域编码:" + location.getAdCode());Message msg = new Message();msg.obj = str;Bundle b=new Bundle();b.putDouble("lat", geoLat);b.putDouble("lng", geoLng);msg.setData(b);msg.what=0;if (handler != null) {handler.sendMessage(msg);//将经纬度传回主线程,画位置图层:aMap.addMarker,aMap.addCircle}}}---------------------------------------------分割线-------------------------------------------Ⅲ.搜附近的主要代码,写在aMap.setInfoWindowAdapter的第一个方法里,对view中的某个控件绑定监听,回调时所执行的操作如下,该方法返回view (也就是infowindow信息窗口):int radius=3000;//搜索附近的半径final PoiSearch poiSearch=new PoiSearch(AMapMainActivity.this, new Query(selectString, PoiTypeDef.All,Constants.CITYCODE));//参数依次为:context,兴趣点,搜索结果类型,城市编码,如北京010,上海021等SearchBound searchBound=new SearchBound(newLatLonPoint(marker.getPosition().latitude,marker.getPosition().longitude),radius);//定义矩形搜索区域poiSearch.setBound(searchBound);poiSearch.setPageSize(10);//设置返回结果页数new Thread( new Runnable() {public void run() {try {PoiPagedResultresult=poiSearch.searchPOI();if (result!=null) {list=result.getPage(1);if (list!=null&&list.size()>0) { handler.sendMessage(Message.obtain(handler, 1));//传回主线程,在地图上标注出搜索结果}}} catch (AMapException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}).start();---------------------------------------------分割线-------------------------------------------显示搜索兴趣点返回所有的结果:private void addMarkers(List<PoiItem> poiItems) {if (listBitmap==null) {listBitmap=new ArrayList<BitmapDescriptor>();//用来存储系统marker图片}if (listBitmap.size()<=0) {listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_AZURE));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_BLUE));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_CYAN));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_GREEN));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_MAGENTA));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_ORANGE));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_RED));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_ROSE));listBitmap.add(BitmapDescriptorFactory.defaultMarker(Bitmap DescriptorFactory.HUE_YELLOW));listBitmap.add(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET));}for (int i = 0; i < poiItems.size(); i++) {aMap.addMarker(new MarkerOptions().position(newLatLng( poiItems.get(i).getPoint().getLatitude(),poiItems.get(i).getPoint().getLongitude())).title(poiItems.get(i).getTitle()).snippet(poiItems.get(i).getSnippet()).icon(listBitmap.get((int)(Math.random()*9))));}}---------------------------------------------分割线-------------------------------------------Ⅳ.乘车路线查询具体实现,代码写的地方与搜附近类似,换一个控件绑定。