高德android api 开发指南
- 格式:doc
- 大小:2.01 MB
- 文档页数:26
原文:/guide/topics/ui/menus.html翻译:Gavin Zhuang更新:2012.06.08{|style="border-spacing: 0px;margin: 4px 4px; width: 70%;" |- | style="width:auto;" |在许多不同类型的应用中,菜单通常是⼀种用户界面组件。
为了提供给用户熟悉且⼀致的体验,你需要使用菜单API来展示用户动作和你应用中的其他选项。
从安卓3.0系统(API level 11)开始,安卓设备已经不再需要提供专用的菜单按键。
基于这种变化,安卓应用需要远离原来所依赖的传统6选项菜单盘,取而代之的是提供⼀个动作条来显示普通用户的动作。
虽然设计方案和用户使用菜单选项的方式已经改变,但是从语义上定义的⼀套动作和选项仍然是基于菜单API的。
这份指导书将介绍在所有版本的安卓系统中如何去创建三个基本类型的菜单和动作:选项菜单和动作条*选项菜单对于⼀个应用的菜单项来说是首要的。
你放置其中的动作⼀般是可以影响整个应用的,例如“搜索”、“写邮件”和“设置”。
假如你为2.3或者更低版本的安卓系统开发应用,那么用户可以通过点击菜单按钮来显示选项菜单盘。
在安卓3.0或者更高的系统中,选项菜单中的选项作为屏幕上动作项和溢出的选项采用动作条显示。
从安卓3.0开始,菜单按键是不被赞成的(⼀些设备⼀个也没有),所以你需要改为使用动作条来提供动作和其他选项的⼊⼝。
请查看关于Menus#.E5.88.9B.E5.BB.BA.E4.B8.80.E4.B8.AA.E9.80.89.E9.A1.B9.E8.8F.9C.E5.8D.95|创建选项菜单的章节。
上下文菜单和上下操作模式*上下文菜单是⼀种浮动的菜单,是在当用户在⼀个元件上执行长按动作时显示的。
当开发平台为安卓3.0或者更高的时候,你需要使用上下文操作模式来使所选的内容产生动作。
微信⼩程序⾼德地图SDK详解及简单实例(源码下载)微信⼩程序⾼德地图SDK:简介微信⼩程序 SDK 帮您在微信⼩程序中获取⾼德丰富的地址描述、POI和实时天⽓数据。
功能介绍账号与Key的申请注册成为⾼德开发者需要分三步:第⼀步,注册⾼德开发者;第⼆步,去控制台创建应⽤;第三步,获取Key。
1注册⾼德开发者2创建应⽤3获取API key获取API Key⼊门指南最后更新时间: 2017年1⽉9⽇本指南是使⽤微信⼩程序SDK的快速⼊门指南。
第 1 步:下载并安装微信⼩程序开发⼯具按照下载并安装微信⼩程序开发者⼯具。
第 2 步:获取⾼德Key点我获取Key>>点我查看申请⾼德Key的⽅法>>第 3 步:创建项⽬按以下步骤新建⼀个本地⼩程序项⽬。
1、启动 "微信web开发者⼯具",使⽤微信扫描⼆维码后,并在微信上点击 "确认登录" 按钮后登录到开发⼯具。
2、点击 "本地⼩程序项⽬" 按钮选择调试类型。
3、点击 "+" 按钮,添加项⽬。
4、依次输⼊ AppID(获取⽅法请参考:),项⽬名称,选择项⽬⽬录,并勾选 "在当前⽬录中创建 quick start 项⽬",然后点击 "添加项⽬" 按钮,重新登录微信公众平台,完成项⽬创建。
相关下载页⾯下载开发包并解压。
第 4 步:下载并安装微信⼩程序SDK从相关下载页⾯下载开发包并解压。
解压后得到 amap-wx.js ⽂件,在创建的项⽬中,新建⼀个名为 libs ⽬录,将 amap-wx.js ⽂件拷贝到 libs 的本地⽬录下,完成安装。
第 5 步:设置安全通讯域名为了保证⾼德⼩程序 SDK 中提供的功能的正常使⽤,需要设置安全域名。
第 6 步:Hello AMapWX1、创建⼩程序实例。
若在创建项⽬时,勾选了"在当前⽬录中创建 quick start 项⽬",可直接跳过此步骤,否则请参考进⾏⼩程序⽰例创建。
【⾼德地图API】从零开始学⾼德JSAPI(四)搜索服务——POI搜索⾃动完成输⼊提⽰⾏政。
摘要:地图服务,⼤家能想到哪些?POI搜素,输⼊提⽰,地址解析,公交导航,驾车导航,步⾏导航,道路查询(交叉⼝),⾏政区划等等。
如果说覆盖物Marker是地图的⾻骼,那么服务,就是地图的⽓⾎。
有个各种各样的地图服务,我们的地图应⽤才能变得有⾎有⾁,活灵活现。
第四篇拆成了⼏个要点,本篇主要讲搜索服务。
包括周边搜索,关键词搜索,范围搜索,搜索提⽰(⾃动完成,输⼊提⽰),⾏政区域,交叉路⼝,检索⾃有数据(云图)。
⽰意图1:⾃动完成,输⼊提⽰⽰意图2:云图,⾃有数据检索,A-H图标显⽰,⿇点图---------------------------------------------------------------------------------------⼀、POI搜索1、关键字查询使⽤search⽅法,传⼀个关键词参数即可。
MSearch.search('东⽅明珠'); //关键字查询完整代码://关键词查询function placeSearch1() {var MSearch;mapObj.plugin(["AMap.PlaceSearch"], function() {MSearch = new AMap.PlaceSearch({ //构造地点查询类pageSize:10,pageIndex:1,city:"021" //城市});AMap.event.addListener(MSearch, "complete", keywordSearch_CallBack);//返回地点查询结果MSearch.search('东⽅明珠'); //关键字查询});}⽰意图:2、输⼊提⽰html部分:<div class="autoclass"><input type="text" id="keyword" name="keyword" value="" style="width: 95%;"/><div id="result1" class="autobox" name="result1"></div></div>JS部分:在地图初始化时,添加【⾃动完成/输⼊提⽰】插件。
【⾼德地图API】如何制作⾃⼰的旅游地图?“旅⾏的梦想并不遥远,只要⼀颗流浪四⽅的⼼。
”——唐⼈⽴。
最早认识唐⼈⽴的时候,他还是⼤⼆的学⽣。
他独⾃完成了“南京20年规划地图”。
⼏年前,他完成了⾃⼰的第⼀本著作,逃学去旅⾏《⼀个⼈⾛世界——⼤学4年200城的旅⾏》。
⽽现在,他正执⾏着他的“辞职去旅⾏”计划。
他好⼼的⽼板还多给他发了⼀个⽉的⼯资。
从南京,到台湾,从曼⾕到斯⾥兰卡……2个⽉来,唐⼈⽴⾛过太多地⽅。
是他原创的图⽚和⽂字,让我渐渐对⾃助游产⽣了兴趣,并决定记录下旅游的每⼀刻。
于是,我开始着⼿制作了这个旅⾏地图。
可能它还不够完善,但的确它能给我们带来太多的正能量。
希望有越来越多的⼈,能够⽤这种⽅式,去记录⾃⼰的旅途。
THX。
代码其实很简单,简单的地图展⽰,简单的覆盖物,简单的信息窗⼝。
然后将下⾯的代码复制到你的⽹站上,并使⽤你⾃⼰的key。
第⼀步、地图展⽰地图级别在国内建议12-18,国外建议在4-6.var mapObj;//初始化地图对象,加载地图function mapInit(){mapObj = new AMap.Map("iCenter",{center:new AMap.LngLat(121.498586,31.239637),level:17});addBuildings();}第⼆步、添加覆盖物覆盖物,就是marker,这⾥⽤的默认的覆盖物。
蓝⾊的,挺好看。
//实例化点标记function addMarker(){marker=new AMap.Marker({icon:"/images/marker_sprite.png",position:new AMap.LngLat(116.405467,39.907761)});marker.setMap(mapObj); //在地图上添加点}第三步、添加信息窗⼝信息窗⼝⽤了⾃定义信息窗⼝,因为觉得兰蓝⾊的⽐较好看。
负责⼈:GloriousOnion主任务原文链接:/guide/topics/ui/custom-components.htmlAndroid平台提供了⼀套完备的、功能强⼤的组件化模型用于搭建用户界面,这套组件化模型以View和ViewGroup这两个基础布局类为基础。
平台本身已预先实现了多种用于构建界面的View⼦类和ViewGroup⼦类,他们被分别称为部件(widget)和布局(layout)。
部件(widget)包括Button、TextView、EditText、ListView、CheckBox、RadioButton、Gallery、Spinner等这些常用部件以及有着专门用途的AutoCompleteTextView、ImageSwitcher和TextSwitcher。
布局(layout)包括:LinearLayout、FrameLayout、RelativeLayout等,如果需要查看更多实例,请查看通用部件对象。
如果这些已有部件和布局不能满足需求,您可以按需实现View⼦类。
如果对已有的部件和布局进行⼩调整就能满足需求,可以通过继承部件或布局并重载特定方法的方式轻松实现。
开发者通过构造View⼦类可以对屏幕元素的样式及功能进行精确控制。
为了使您对定制View的可控性有⼀个直观了解,下面给出可以对定制View进行操作的⼏个实例:您可以将View定制成特别样式,比如⼀个使用2D图片渲染的音量调节器可以做成模拟电路控制的样⼦。
您可以将⼀组View组件合成为⼀个新的独立组件,比如制作⼀个下拉列表框(弹出列表和输⼊框的组合)、双区域选择控制器(有左、右两个选择区域,选择框中的元素可随意切换其左右位置)等等。
您可以重载EditText组件的屏幕绘制方式(NotePad教程很好地利用了这⼀点,使之产生了带有下划线的记事本页面)。
您可以监听多种事件(包括按下按键事件),并可以定制这些事件的处理方式。
⾼德地图api实现地址和经纬度的转换(python)利⽤⾼德地图web服务api实现地理/逆地址编码api使⽤具体⽅法请查看官⽅⽂档1.利⽤python第三⽅库requests实现1#!/usr/bin/env python32#-*- coding:utf-8 -*-3'''4利⽤⾼德地图api实现地址和经纬度的转换5'''6import requests78def geocode(address):9 parameters = {'address': address, 'key': 'cb649a25c1f81c1451adbeca73623251'}10 base = '/v3/geocode/geo'11 response = requests.get(base, parameters)12 answer = response.json()13print(address + "的经纬度:", answer['geocodes'][0]['location'])1415if__name__=='__main__':16#address = input("请输⼊地址:")17 address = '北京市海淀区'18 geocode(address)2.基于http协议利⽤标准库http.client实现1#!/usr/bin/env python32#-*- coding:utf-8 -*-3'''4利⽤⾼德地图api实现地址和经纬度的转换5'''678import http.client9import json10from urllib.parse import quote_plus1112 base = '/v3/geocode/geo'13 key = 'cb649a25c1f81c1451adbeca73623251'1415def geocode(address):16 path = '{}?address={}&key={}'.format(base, quote_plus(address), key)17#print(path)18 connection = http.client.HTTPConnection('',80)19 connection.request('GET', path)20 rawreply = connection.getresponse().read()21#print(rawreply)22 reply = json.loads(rawreply.decode('utf-8'))23print(address + '的经纬度:',reply['geocodes'][0]['location'])2425if__name__=='__main__':26#address = input("请输⼊你的地址:")27 address = '北京市朝阳区'28 geocode(address)3.利⽤基于传输层上socket实现1#!/usr/bin/env python32#-*- coding:utf-8 -*-34import socket5from urllib.parse import quote_plus67 request_text = """\8GET /v3/geocode/geo?address={}&key=cb649a25c1f81c1451adbeca73623251 HTTP/1.1\r\n\9Host: :80\r\n\10User-Agent: search4.py\r\n\11Connection: close\r\n\12\r\n\13"""1415def geocode(address):16 sock = socket.socket()17 sock.connect(('', 80))18 request = request_text.format(quote_plus(address))19 sock.sendall(request.encode('ascii'))20 raw_reply = b''21while True:22 more = sock.recv(4096)23if not more:24break25 raw_reply += more26print(raw_reply.decode('utf-8'))2728if__name__=='__main__':29#address = input("请输⼊地址:")30 address = '北京市朝阳区'31 geocode(address)。
【高德地图API】从零开始学高德JS API(五)路线规划先来看两个问题:路线规划与导航有什么区别?步行导航与驾车导航有什么区别?回答:1、路线规划,指的是为用户提供3条路线推荐。
【高德】在提供路线规划的时候,会提供用户自定义路线规划功能,这是别家没有做到的。
导航,指的是为驾车用户提示路口信息,向左向右,进入匝道等信息。
2、我们这里说的步行导航和驾车导航,严格的说,应该是路线规划。
从A地到B地,如果是驾车,路线规划会将公路路网做为搜索数据;如果是步行,过街天桥、地下通道、人行道做为搜索数据。
-------------------------------------------------------------------------------------------------------一、路线规划——驾车1、驾车路线规划有三种策略,分别是最短时间、最少费用、最短路径、规避拥堵(参考了实时交通数据,这个比较NB)。
LEAST_TIME,LEAST_FEE,LEAST_DISTANCE,REAL_TRAFFIC我们在这里采取驾车插件来做。
代码://驾车导航function driving_route() {clearMap();mapObj.plugin(["AMap.Driving"], function() {var DrivingOption = {policy: AMap.DrivingPolicy.LEAST_TIME };MDrive = new AMap.Driving(DrivingOption); //构造驾车导航类AMap.event.addListener(MDrive, "complete", driving_routeCallBack); //返回导航查询结果MDrive.search(start_xy, end_xy); //根据起终点坐标规划驾车路线});}示意图:2、驾车最后一公里步行在最开始一段,和最后一段步行距离的时候,可以用虚线来表示。
{售后服务}高德服务接口说明新版
高德地图作为国内领先的地理信息服务提供商,不仅提供了精准的地图数据和导航服务,还为用户提供了完善的售后服务。
下面将对高德地图的售后服务接口进行详细的说明。
3.技术支持API:高德地图为开发者提供了专门的技术支持API,用户可以通过该接口获取高德地图开发者平台的技术支持信息。
用户可以了解到最新的技术文档、开发指南、常见问题及解决方案等,以帮助开发者解决技术上的问题。
4.问题反馈API:用户使用高德地图产品时,遇到问题可以通过问题反馈API进行反馈。
用户可以描述问题的具体内容和出现的情况,并提供相应的截图或录像等辅助材料。
高德地图的技术人员会仔细分析用户的问题,并尽快给出解决方案或回复。
5.帮助中心API:高德地图还提供了帮助中心API,用户可以通过该接口获取到高德地图的帮助中心的相关信息。
帮助中心包括了各类教程、常见问题及解答、使用说明等,用户可以根据需要查阅相关的帮助文档,解决自己的问题。
6.售后服务投诉API:如果用户对高德地图的售后服务不满意,可以通过售后服务投诉API进行投诉。
用户可以详细描述投诉的内容和原因,高德地图将会尽快处理用户的投诉,并采取相应的措施改进售后服务。
⾼德地图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的智能出行推荐系统设计随着智能化技术的不断发展,人们日常的出行方式也在发生着变化。
智能出行推荐系统应运而生,通过算法分析用户的出行习惯和相关数据,为用户提供更加个性化的出行服务,既能够提升用户体验,又能够减少资源浪费。
本文提出了一种基于高德地图API的智能出行推荐系统设计,分为四个部分:用户出行行为数据收集、数据处理与分析、推荐算法、前端展示。
一、用户出行行为数据收集智能出行推荐系统的第一步就是对用户的出行行为进行数据收集和处理。
本文采用高德地图的API接口来获取用户的出行数据,包括起点、终点、出行方式、出行时间等。
针对数据的收集需要遵循以下几个原则:1、用户同意原则:用户必须同意数据被收集和使用,可以通过设置获取用户的出行数据。
如果没有得到用户的同意,系统不能将公民的个人信息用于用户画像或洞察。
2、信息保护原则:数据收集过程中需要建立完善的信息保护机制,确保数据不被滥用、泄露,保护用户的隐私安全。
3、数据完整性原则:数据必须完整且准确,系统需要进行处理和筛选,保证使用的数据准确性和有效性。
二、数据处理与分析在数据收集的基础上,需要对数据进行处理和分析,以便于为用户提供更加精准的出行服务。
首先,把采集到的用户出行数据存储在数据库中。
其次,对数据进行处理和分析,提取出重要的特征集,这些特征集包括起点、终点、出行时间和出行方式等,由此生成用户的出行画像。
最后,在获取数据的基础上,通过算法进行分析和推断,选择合适的出行方案来提供给用户。
三、推荐算法推荐算法是智能出行推荐系统的核心之一。
在本文的系统中,我们采用了基于规则引擎的推荐算法和基于协同过滤的推荐算法。
1、基于规则引擎的推荐算法:基于规则引擎的算法是一种简单而有效的推荐算法,它根据用户出行画像和出行目的,结合城市导航的数据,推荐出最优的出行方案。
2、基于协同过滤的推荐算法:协同过滤是一种常见的推荐算法,它基于用户对出行行为的相似性来推荐出行方案。
API 简介什么是高德地图Android API?高德地图Android API 版是一套基于Android 1.6 及以上设备的应用程序接口,通过该接口,用户可以轻松访问高德地图服务和数据,构建功能丰富、交互性强的地图应用程序。
高德地图Android API 不仅包含构建地图的基本接口,还提供了诸如矢量地图、栅格地图、地图定位(GPS、基站、WiFi)、本地搜索、路线规划等数据服务,用户可以根据自己的需要进行选择。
面向的读者本API 是提供给具有一定Android 编程经验和了解面向对象概念的读者使用的。
此外,读者还应该对地图产品有一定的了解。
用户在使用中遇到任何问题,可以通过问答社区反馈给我们。
兼容性系统:支持Android 1.6 及以上系统。
注意事项下面介绍在程序开发中需注意的问题:必须在manifest 中设置相应的权限,代码如下:源码复制打印关于1<uses-permission2android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permis sion>3<uses-permission4android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permissi on>5<uses-permission6android:name="android.permission.INTERNET"></uses-permission>7<uses-permission8android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permissi on>9<uses-permission10android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permis sion>11<uses-permission12android:name="android.permission.READ_PHONE_STATE"></uses-permission> 13<uses-permission14android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> 15<uses-permission16android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 地图显示如何把API 添加到我的Android 工程中?首先创建工程,并在工程Build Path>Configure Build Path…>libraries 中选择“Add Externel JARs…”,选定MapApi.jar,点击OK,这样就可以将高德地图Android API 库文件引入。
然后在工程Build Path>Configure Build Path…>Order and Export 中将引入的库文件MapApi.jar 选中,点击OK,这样您就可以在您的程序中使用高德地图API 了。
栅格地图显示MapActivity 是一个抽象类,任何想要显示MapView 的activity 都需要派生自MapActivity。
并且在其派生类的onCreate() 中,都要创建一个MapView 实例。
源码复制打印关于17public class GridMapView extends MapActivity{18private MapView mMapView;19private MapController mMapController;20private GeoPoint point;21@Override22/**23*显示栅格地图,启用内置缩放控件,并用MapController 控制地图的中心点及Zoom 级别24*/25protected void onCreate(Bundle savedInstanceState) {26// TODO Auto-generated method stub27super.onCreate(savedInstanceState);28setContentView(yout.mapview);29mMapView = (MapView) findViewById(R.id.mapView);30mMapView.setBuiltInZoomControls(true); //设置启用内置的缩放控件31mMapController = mMapView.getController(); // 得到mMapView 的控制权,可以用它控制和驱动平移和缩放32point = new GeoPoint((int) (39.982378 * 1E6),33(int) (116.304923 * 1E6)); //用给定的经纬度构造一个GeoPoint,单位是微度(度* 1E6)34mMapController.setCenter(point); //设置地图中心点35mMapController.setZoom(12); //设置地图zoom 级别36}37}在布局xml 中添加地图控件:源码复制打印关于38<?xml version="1.0" encoding="utf-8"?>39<LinearLayoutxmlns:android="/apk/res/android"40xmlns:autonavi="/apk/res/com.AMap"41android:orientation="vertical" android:layout_width="fill_parent"42android:layout_height="fill_parent">43<com.amap.mapapi.map.MapView android:id="@+id/mapView"44android:layout_width="fill_parent" android:layout_height="fill_parent"45android:clickable="true"46/>47</LinearLayout>结果见图3-1 栅格地图显示效果图:图3-1 栅格地图显示效果图矢量地图显示将libminimapv320.so 复制到工程目录下的libs\armeabi,目录结构见图3-2 工程目录结构图:图3-2 工程目录结构图代码如下:源码复制打印关于48public class VectorMapView extends MapActivity{49private MapView mMapView;50private MapController mMapController;51private GeoPoint point;52@Override53/**54*显示矢量地图,将libminimapv300.so 复制到工程目录下的libs\armeabi。
55*启用内置缩放控件,并用MapController 控制地图的中心点及Zoom 级别56*/57protected void onCreate(Bundle savedInstanceState) {58// TODO Auto-generated method stub59this.setMapMode(MAP_MODE_VECTOR);//设置地图为矢量模式60super.onCreate(savedInstanceState);61setContentView(yout.mapview);62mMapView = (MapView) findViewById(R.id.mapView);63mMapView.setBuiltInZoomControls(true); //设置启用内置的缩放控件64mMapController = mMapView.getController(); // 得到mMapView 的控制权,可以用它控制和驱动平移和缩放65point = new GeoPoint((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 如何获取定位信息高德地图Android API 中提供了GPS 和网络(基站和WiFi)定位。
如果使用此功能,必须注册GPS 和网络的使用权限,请参考注意事项。
在获取用户位置时,优先使用GPS 进行定位;如果GPS 定位没有打开或者没有可用位置信息,则判断是否通过网络(基站和WiFi)连接,如果是,高德地图会根据手机所在环境选择WiFi 或者基站获取用户当前位置。
源码复制打印关于71public class LocationManager extends Activity {72private LocationManagerProxy locationManager = null;73private static final long mLocationUpdateMinTime = 0;74private static final float mLocationUpdateMinDistance = 0;75private TextView myLocation;76/** Called when the activity is first created. */77@Override78public void onCreate(Bundle savedInstanceState) {79super.onCreate(savedInstanceState);80setContentView(yout.location);81myLocation = (TextView) findViewById(R.id.myLocation);82locationManager = LocationManagerProxy.getInstance(this);83}84@Override85protected void onPause() {86// TODO Auto-generated method stub87super.onPause();88locationManager.removeUpdates(locationListener);89}90@Override91protected void onResume() {92// TODO Auto-generated method stub93super.onResume();94//获取当前可用的Provider,其中AMapNetwork 为AMap 网络定位(基站和WiFi)95for (final String provider : locationManager.getProviders(true)) { 96if(LocationManagerProxy.GPS_PROVIDER.equals(provider)||LocationProviderProx y.AMapNetwork.equals(provider)) {97locationManager.requestLocationUpdates(provider,mLocationUpdateMinTime, mLocationUpdateMinDistance,98 locationListener);99}100}101}102LocationListener locationListener = new LocationListener() {103@Override104public void onLocationChanged(Location location) {105// TODO Auto-generated method stub106if (location != null) {107Double geoLat = location.getLatitude();108 Double geoLng = location.getLongitude();109 myLocation.setText("定位成功:(" + geoLng + "," + geoLat + ")");110}111}112@Override113public void onProviderDisabled(String provider) {114}115@Override116public void onProviderEnabled(String provider) {117}118@Override119public void onStatusChanged(String provider, int status, Bundle extras) {120}121};122}如何通过MyLocationOverlay 实现自动定位首先在程序中打开相关权限,然后将MyLocationOverlay 实例添加到MapView 中,并调用enableMyLocation()方法,即可实现当前位置的显示。