高德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,获取和设置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>。
安卓高德地图课程设计一、课程目标知识目标: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,实现起点到终点的路径规划功能。
Android是目前最流行的移动操作系统之一,拥有庞大的用户群体和丰富的应用开发资源。
在Android开发中,图像识别和二维码识别功能已经成为了热门的技术,为应用程序的开发增添了更多的可能性。
本文将介绍如何使用Android的图像识别和二维码识别功能进行开发。
一、图像识别功能的开发1. 图像识别原理图像识别是通过分析和处理图像中的信息,来识别出图像中的物体或特定的内容。
在Android开发中,可以利用Google提供的Vision API来实现图像识别功能。
Vision API使用机器学习的算法,可以识别出图像中的物体、文字等。
2. 集成Vision API要使用Vision API,首先需要在项目中引入Google Play服务库。
然后,在项目的文件中添加如下依赖项:```javaimplementation ':play-services-vision:'```接下来,在需要使用图像识别功能的地方,可以通过以下代码创建一个Vision API的实例:```javaGoogleApiClient mGoogleApiClient = new (this).addApi().build();();```3. 图像识别功能的实现在通过Vision API创建实例后,就可以使用该实例进行图像识别了。
例如,可以通过以下代码来实现在拍照后识别图像中的物体:```java// 创建一个Detector对象BarcodeDetector barcodeDetector = new (context).build();// 加载要识别的图像Bitmap bitmap = (imagePath);// 创建一个Frame对象Frame frame = new ().setBitmap(bitmap).build();// 识别图像中的内容SparseArray<Barcode> barcodes = (frame);// 获取识别结果if (() > 0) {Barcode barcode = (0);String barcodeValue = ;// 处理识别结果...}```二、二维码识别功能的开发1. 二维码识别原理二维码是一种编码方式,通过将信息以黑白像素点的方式编码成图形,从而实现信息的存储和识别。
Android应用的离线地图和导航开发随着智能手机的普及,人们越来越依赖于手机进行导航。
然而,在许多地区,网络信号可能较弱或者根本没有网络连接。
因此,为Android应用开发离线地图和导航功能变得至关重要。
本文将介绍如何进行Android应用的离线地图和导航开发。
1. 地图数据下载与存储离线地图和导航首先需要地图数据的下载和存储。
可以选择使用开源地图数据,如OpenStreetMap。
从OpenStreetMap下载地图数据可以通过使用工具如OsmAnd或MOBAC进行。
这些工具允许你选择地区或者指定的地图范围,并将数据保存为特定格式的文件。
在下载和存储地图数据时,需要考虑设备的存储空间和性能。
2. 地图数据格式转换与渲染下载的地图数据通常是以特定格式存储的,如.osm或.。
为了在Android应用中使用这些数据,需要将其转换为合适的地图数据格式,如MBTiles或SQLite。
有一些开源工具可用于执行这个任务,如TileMill或OSMBonusPack。
转换后的地图数据可以通过使用地图库,如Google Maps API或Mapbox SDK在应用中进行渲染。
3. 离线导航算法与路径规划离线导航需要使用导航算法和路径规划来计算最佳路径和提供导航指示。
有一些开源导航库可供使用,如GraphHopper和OsmAnd。
这些库提供了各种导航算法,如Dijkstra算法和A*算法,以及路径规划功能。
通过使用这些库,可以根据地图数据和用户输入计算出最佳路径,并提供导航指示,如转向提示和下一步行动建议。
4. 用户界面设计与交互离线地图和导航应用的用户界面设计和交互非常重要。
用户应该能够轻松地查看地图、搜索位置并进行导航。
可以使用用户界面设计工具如Adobe XD或Sketch来设计应用的界面。
在设计界面时,需要考虑到用户的需求和使用习惯。
例如,提供用户友好的地图缩放和平移功能,以及清晰的导航指示和语音提示。
概述命名空间:AMap 是整个高德地图JavaScript API 的命名空间,本手册中介绍的所有类和对象都通过AMap.XXX 的方式调用。
如创建一个LngLat对象:new AMap.LngLat(116.397428,39.90923)。
已过时方法声明已过时方法:不符合JavaScript API 最新版本的设计规范的方法。
已过时方法的处理原则:API 将不再更新和维护这些方法,新的应用请使用正式的方法;已使用过时方法的应用,请尽快进行代码改造,使用正式方法,以获取最新支持。
事件1.event 事件命名空间静态方法EventListener 对象规范(自v1.2 新增)此对象没有构造函数,由event 的addDomListener()、addListener()方法返回,在需要移除事件监听器时,作为参数传递给removeListener() 方法。
MapsEvent 对象规范(自v1.2 新增)此对象用于表示地图、覆盖物、叠加层上的各种鼠标事件返回,包含以下字段:地图Map 类地图对象类,封装了地图显示、交互等操作的方法。
View2D 类二维地图显示视口,用于定义二维地图静态显示属性,如地图缩放级别“zoom”、地图中心点“center”等。
基础类基础类Pixel 类像素坐标,确定地图上的一个像素点。
Size 类地物对象的像素尺寸LngLat 类经纬度坐标,确定地图上的一个点。
Bounds 类地物对象的经纬度矩形范围。
覆盖物覆盖物Marker 类点标记。
MarkerShape类MarkerShape用于划定Marker的可点击区域范围。
需要注意的是,在IE浏览器中图标透明区域默认为不触发事件,因此MarkerShape在IE中不起作用。
Icon 类表示点标记的图标用于添加复杂点标记,即在普通点标记的基础上,添加Icon类,通过在Icon表示的大图上截取其中一部分作为标注的图标Polyline 类覆盖物>折线Polygon 类覆盖物>多边形Circle 类覆盖物>圆GroundImage 类图片覆盖物类,用于添加一个只有一张图片的图层,图片会随缩放级别而自适应缩放。
Android⾼德地图marker⾃定义弹框窗⼝本⽂实例为⼤家分享了Android⾼德地图marker⾃定义弹框窗⼝的具体代码,供⼤家参考,具体内容如下最终效果:1.gradle⾥添加⾼德地图依赖implementation 'com.amap.api:map2d:latest.integration'//2d地图功能implementation 'com.amap.api:location:latest.integration'//定位功能2.如果要⽤到定位的话,就⾸先到⾼德控制台⾥⾯加⼊本应⽤的信息获取到key,再在Application⾥设置key,并在AndroidManifest.xml中应⽤MainApppublic class MainApp extends android.app.Application {@Overridepublic void onCreate() {super.onCreate();//⾼德地图注册AMapLocationClient.setApiKey("0f1d26a891783cc4d632965a7cc08443");}}<manifest xmlns:android="/apk/res/android"package="com.hk.testapplication"><uses-permission android:name="android.permission.INTERNET" /> <!-- 访问⽹络权限 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- ⽤于访问GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><applicationandroid:name=".MainApp"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.TestApplication"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity></application></manifest>3. 创建activity_main.xml地图布局⽂件<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android" xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.amap.api.maps2d.MapViewandroid:id="@+id/mapview"android:layout_width="match_parent"android:layout_height="match_parent"></com.amap.api.maps2d.MapView></androidx.constraintlayout.widget.ConstraintLayout>4. MainActivity⾥加载地图,添加marker@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);mMapView = findViewById(R.id.mapview);mMapView.onCreate(savedInstanceState);// 此⽅法必须重写mMap = mMapView.getMap();initPoint(30.665534,104.070929); //地图中⼼点位initMarker();//测试点位}/*** 绘制marker*/private void initMarker() {mMarkers = new ArrayList<>();//绘制marker 实际使⽤时会循环创建marker并填⼊数据Marker marker = mMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).position(new LatLng(30.665534,104.070929)).title("标题数据").snippet("消息数据").icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round))));//点位图标mMarkers.add(marker);}/*** 加载地图中⼼点*/private void initPoint(double latitude, double Longitude) {LatLng marker1 = new LatLng(latitude, Longitude);mMap.moveCamera(CameraUpdateFactory.changeLatLng(marker1));mMap.moveCamera(CameraUpdateFactory.zoomTo(12));}@Overridepublic void onResume() {super.onResume();if (mMapView != null)mMapView.onResume(); //管理地图的⽣命周期}@Overridepublic void onPause() {super.onPause();if (mMapView != null)mMapView.onPause(); //管理地图的⽣命周期}@Overridepublic void onDestroy() {super.onDestroy();if (mMapView != null)mMapView.onDestroy(); //管理地图的⽣命周期}}5.添加弹框⾃定义布局view_map_infowindow.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="50dp"android:minHeight="50dp"android:minWidth="100dp"android:background="#ffff"android:gravity="center"><ImageViewandroid:id="@+id/iv_left"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"/><TextViewandroid:layout_marginLeft="10dp"android:layout_marginRight="10dp"android:id="@+id/tv_msg"android:text="⾃定义布局"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageViewandroid:id="@+id/iv_right"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@mipmap/ic_launcher"/>记得设置布局最⼩⾼度和宽度,不然窗⼝会默认宽度⾼度,会使布局显⽰不完整6.添加⾃定义弹框窗⼝adapter/***⾃定义地图弹框adapter* @author hk*/public class MapInfoWinAdapter implements WindowAdapter, View.OnClickListener { private Context mContext;private LatLng latLng;private TextView mTvMsg;private ImageView mIvLeft,mIvRight;private String mSnippet,mTitle;@Overridepublic View getInfoWindow(Marker marker) {initData(marker);View view = initView();return view;}@Overridepublic View getInfoContents(Marker marker) {return null; //因为是⾃定义的布局,返回null}public MapInfoWinAdapter(Context context) {mContext = context;}private void initData(Marker marker) {//当前点位经纬度latLng = marker.getPosition();//当前点位带的消息信息也可通过这个传输数据把数据转成jsonmSnippet = marker.getSnippet();//当前点位带的标题信息mTitle = marker.getTitle();}@NonNullprivate View initView() {//获取⾃定义的布局View view = LayoutInflater.from(mContext).inflate(yout.view_map_infowindow, null);mTvMsg = (TextView) view.findViewById(_msg);mIvLeft= (ImageView) view.findViewById(R.id.iv_left);mIvRight= (ImageView) view.findViewById(R.id.iv_right);mTvMsg.setText("我是⾃定义布局弹框");mIvLeft.setOnClickListener(this);mIvRight.setOnClickListener(this);return view;}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.iv_left:Toast.makeText(mContext,"我是左边按钮点击事件",Toast.LENGTH_SHORT).show();break;case R.id.iv_right:Toast.makeText(mContext,"我是右边按钮点击事件",Toast.LENGTH_SHORT).show();break;}}}7.地图绑定adapter//重要创建⾃定义适配器MapInfoWinAdapter adapter = new MapInfoWinAdapter(this);mMap.setInfoWindowAdapter(adapter);//设置⾃定义窗⼝adapter现在点击marker就会弹出我们⾃定义的布局了8.点击地图或弹框关闭弹框窗⼝mMap.setOnInfoWindowClickListener(this);//弹框窗⼝点击事件mMap.setOnMapClickListener(this);//地图点击事件@Overridepublic void onMapClick(LatLng latLng) {//点击地图区域关闭所有窗⼝for (Marker marker : mMarkers) {marker.hideInfoWindow();}}@Overridepublic void onInfoWindowClick(Marker marker) {if (marker.isInfoWindowShown()) {marker.hideInfoWindow();//再次点击窗⼝就隐藏窗⼝}}到此⾃定义弹框窗⼝就完成了,以下为完整MainActivity代码public class MainActivity extends AppCompatActivity implements AMap.OnInfoWindowClickListener, AMap.OnMapClickListener { private AMap mMap;private List<Marker> mMarkers;private MapView mMapView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);mMapView = findViewById(R.id.mapview);mMapView.onCreate(savedInstanceState);// 此⽅法必须重写mMap = mMapView.getMap();mMap.setOnMapClickListener(this);//地图点击事件initPoint(30.665534,104.070929); //地图中⼼点位initMarker();//测试点位}/*** 绘制marker*/private void initMarker() {mMarkers = new ArrayList<>();//重要创建⾃定义适配器MapInfoWinAdapter adapter = new MapInfoWinAdapter(this);mMap.setInfoWindowAdapter(adapter);//设置⾃定义窗⼝adaptermMap.setOnInfoWindowClickListener(this);//绘制marker 实际使⽤时会循环创建marker并填⼊数据Marker marker = mMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f).position(new LatLng(30.665534,104.070929)).title("标题数据").snippet("消息数据").icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round))));//点位图标 mMarkers.add(marker);}/*** 加载地图中⼼点*/private void initPoint(double latitude, double Longitude) {LatLng marker1 = new LatLng(latitude, Longitude);mMap.moveCamera(CameraUpdateFactory.changeLatLng(marker1));mMap.moveCamera(CameraUpdateFactory.zoomTo(12));}@Overridepublic void onMapClick(LatLng latLng) {//点击地图区域关闭所有窗⼝for (Marker marker : mMarkers) {marker.hideInfoWindow();}}@Overridepublic void onInfoWindowClick(Marker marker) {if (marker.isInfoWindowShown()) {marker.hideInfoWindow();//再次点击窗⼝就隐藏窗⼝}}@Overridepublic void onResume() {super.onResume();if (mMapView != null)mMapView.onResume(); //管理地图的⽣命周期}@Overridepublic void onPause() {super.onPause();if (mMapView != null)mMapView.onPause(); //管理地图的⽣命周期}@Overridepublic void onDestroy() {super.onDestroy();if (mMapView != null)mMapView.onDestroy(); //管理地图的⽣命周期}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
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()方法,即可实现当前位置的显示。