解决问题:

在百度地图上标注大量地址,如“海淀区上地十街10号”

工具:

eclipse+ADT,百度Android地图SDK v3.6.0

效果展示:

图中包含绿色的标记“起”以及红色标记“A”,从而可以在地图上直观的查看“起”与其他标注之间的位置关系,支持缩放。

问题分解:

1、地理编码,将地址转换为经纬度

第一步,创建地理编码检索实例;

mSearch = GeoCoder.newInstance();

第二步,创建地理编码检索监听者;

OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {  public void onGetGeoCodeResult(GeoCodeResult result) {  if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {  //没有检索到结果  }  //获取地理编码结果  }  @Override  public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {  if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {  //没有找到检索结果  }  //获取反向地理编码结果  }
};

第三步,设置地理编码检索监听者;

mSearch.setOnGetGeoCodeResultListener(listener);

第四步,发起地理编码检索;

mSearch.geocode(new GeoCodeOption()  .city(“北京”)  .address(“海淀区上地十街10号”);

1、标注,在地图上根据经纬度添加图标

//定义Maker坐标点
LatLng point = new LatLng(39.963175, 116.400244);
//构建Marker图标
BitmapDescriptor bitmap = BitmapDescriptorFactory  .fromResource(R.drawable.icon_marka);
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option = new MarkerOptions()  .position(point)  .icon(bitmap);
//在地图上添加Marker,并显示
mBaiduMap.addOverlay(option);

常见错误:

(a)

通常是因为AK码有误,按照官网教程仔细填写即可。
(b)onGetCodeResult报错
OnGetGeoCoderResultListener geoListener = new OnGetGeoCoderResultListener() {public void onGetGeoCodeResult(GeoCodeResult result) {if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {// 没有检索到结果Log.e(LOGSTR, "adress to LatLng error!" + result.error);} else {// 获取地理编码结果LatLng addressTemp = result.getLocation();Log.w(LOGSTR, "ADDRESS:" + addressTemp.latitude + ";"+ addressTemp.longitude);posList.add(addressTemp);Log.w(LOGSTR, "size of list1:"+ posList.size());}}@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {// 没有找到检索结果}// 获取反向地理编码结果}};

通常是由于程序在SDK初始化之后立即触发了监听器,而此时权鉴还没完成,所以要在地图SDK初始化完成过一段时间之后再触发监听器。
SDKInitializer.initialize(getApplicationContext());

(c)GeoCoder连续触发OnGetGeoCoderResultListener监听器结果返回的地理位置信息错误,原因是所有的search接口,都必须完成一次后再发起第二次,如果有几个并发的需求,就需要new几个对象分别做。

程序主要代码:

public class MainActivity extends Activity {GeoCoder mSearch = null; // 搜索模块,也可去掉地图模块独立使用BaiduMap mBaiduMap = null;MapView mMapView = null;private static final String LOGSTR = "Jerry";BitmapDescriptor bitmapA = null;BitmapDescriptor bitmapStart = null;ArrayList<LatLng> posList = null; ArrayList<String> addressList = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 在使用SDK各组件之前初始化context信息,传入ApplicationContext// 注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);if (savedInstanceState == null) {getFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();}posList = new ArrayList<LatLng>();addressList = new ArrayList<String>();initializeAddressList();// 获取地图控件引用mMapView = (MapView) findViewById(R.id.bmapView);Log.w(LOGSTR, "initialize view success!");mBaiduMap = mMapView.getMap();Log.w(LOGSTR, "initialize baidumap success!");// 初始化搜索模块,注册事件监听mSearch = GeoCoder.newInstance();Log.w(LOGSTR, "initialize GeoCoder success!");bitmapA = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);bitmapStart = BitmapDescriptorFactory.fromResource(R.drawable.icon_st);Log.w(LOGSTR, "initialize bitmap success!");mSearch.setOnGetGeoCodeResultListener(geoListener);Log.w(LOGSTR, "add listener success!");//在MenuItem中显示地址标注,见onOptionsItemSelected}OnGetGeoCoderResultListener geoListener = new OnGetGeoCoderResultListener() {public void onGetGeoCodeResult(GeoCodeResult result) {if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {// 没有检索到结果Log.e(LOGSTR, "adress to LatLng error!" + result.error);} else {// 获取地理编码结果LatLng addressTemp = result.getLocation();Log.w(LOGSTR, "ADDRESS:" + addressTemp.latitude + ";"+ addressTemp.longitude);posList.add(addressTemp);Log.w(LOGSTR, "size of list1:"+ posList.size());}}@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {// 没有找到检索结果}// 获取反向地理编码结果}};@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}private void littleSleep(){try {Thread.sleep(300);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_show){Log.w(LOGSTR, "meu item Show");mBaiduMap.clear();int len = posList.size();MarkerOptions option = new MarkerOptions().position(posList.get(0)).icon(bitmapStart).visible(true);//掉下动画option.animateType(MarkerAnimateType.drop);// 在地图上添加Marker,并显示mBaiduMap.addOverlay(option);littleSleep();for(int i=1; i<len; i++){MarkerOptions option1 = new MarkerOptions().position(posList.get(i)).icon(bitmapA).visible(true).zIndex(2);//掉下动画option1.animateType(MarkerAnimateType.drop);mBaiduMap.addOverlay(option1);}return true;}if (id == R.id.action_settings) {//显示地址posList.clear();int len = addressList.size();// 初始化搜索模块,注册事件监听GeoCoder searchTemp1 = GeoCoder.newInstance();searchTemp1.setOnGetGeoCodeResultListener(geoListener);searchTemp1.geocode(new GeoCodeOption().city("北京").address(addressList.get(0)));littleSleep();for(int i=1; i<len; i++){// 初始化搜索模块,注册事件监听GeoCoder searchTemp = GeoCoder.newInstance();searchTemp.setOnGetGeoCodeResultListener(geoListener);searchTemp.geocode(new GeoCodeOption().city("北京").address(addressList.get(i)));}return true;}return super.onOptionsItemSelected(item);}private void initializeAddressList(){addressList.add("房山区良乡西路2号中大瑞祥市场一层+地下一层");addressList.add("房山区良乡地区拱辰大街家乐福首层北侧");addressList.add("房山区拱辰街道东羊庄村18号一层");addressList.add("丰台区西三环南路10号一层");addressList.add("丰台区太平桥西里甲1号");addressList.add("朝阳区甜水园北里16号楼一层");addressList.add("朝阳区甘露园南里25号朝阳园三期商业一层");addressList.add("北京市朝阳区姚家园路东口甲1号活力东方家乐福");addressList.add("海淀区清华东路2号金码大厦A座首层");addressList.add("海淀区双清路88号华源世纪商务楼一二层");addressList.add("海淀区学清路甲8号一层");addressList.add("海淀区宝盛北里西区28号楼一层和二层");addressList.add("海淀区清河镇华润五彩城商业一层");addressList.add("海淀区清河永泰庄路甲1号");addressList.add("海淀区清河毛纺路南甲36号金五星商业大厦");addressList.add("昌平区西三旗环岛东北角上  奥世纪中心商业办公楼2#A座一层+二层");addressList.add("昌平区回龙观东大街1号楼-1至2层的01的一层和二层");addressList.add("昌平区回龙观镇黄土店黄平路泰华龙旗广场3#商业楼一层");addressList.add("海淀区阜成路51-2");addressList.add("海淀区花园北路44号");addressList.add("海淀区西三环北路70号");addressList.add("海淀区学院南路50号首层及二层");addressList.add("海淀区花园路2号首层");addressList.add("海淀区学院路17号一,二层");addressList.add("海淀区学院路甲38号长城电脑大厦");addressList.add("海淀区北三环中路49号");addressList.add("海淀区北三环西路48号1#楼FA8商铺");addressList.add("海淀区上地东里一区4号楼一层西厅中部");addressList.add("海淀区成府路28号优盛大厦一层09号,二层019号");addressList.add("海淀区农大南路与信息路交叉口东北角华联F1+F2");addressList.add("海淀区万泉河路68号紫金大厦一层北侧");addressList.add("海淀区北洼路4号");addressList.add("海淀区海淀南路13号楼亿方大厦一、二层");addressList.add("海淀区亮甲店危改小区(南区)3号楼地上部分家乐福定慧桥店首层西侧");addressList.add("海淀区中关村大街19号新中关大厦B1");addressList.add("海淀区海淀大街3号鼎好电子大厦A座B1");addressList.add("海淀区中关村大街11号1层C1580号商铺");addressList.add("海淀区魏公村路5号");addressList.add("海淀区远大路远大居住区二期世纪金源大酒店一层东南角");addressList.add("海淀区远大路1号首层");addressList.add("海淀区巴沟路2号北京华联万柳购物中心一层");addressList.add("海淀区白石桥路甲54号家乐福超市一层西侧");addressList.add("海淀区复兴路12号恩菲科技大厦");addressList.add("海淀区五棵松路35号北京欧尚超市F1、B1");addressList.add("海淀区永定路88号长银大厦一层");addressList.add("海淀区知春路29号F1+F2");addressList.add("海淀区阜成路23号一层、二层");addressList.add("海淀区西直门北大街32号枫蓝国际中心商场B座一层  ");addressList.add("海淀区北三环西路大钟寺国际广场一层+二层");addressList.add("海淀区复兴路23号二层");addressList.add("海淀区复兴路甲23号");addressList.add("海淀区复兴路69号商场地下一层B1——111号及A1-05西南侧");addressList.add("海淀区复兴路32号院一区");addressList.add("宣武区宣武门外大街32号");addressList.add("西城区新街口北大街50号");addressList.add("西城区西外大街德宝新园14号");addressList.add("西城区复兴门外大街8号楼裙楼二层");addressList.add("西城区地安门外大街178号");addressList.add("西城区月坛南街乙71号");addressList.add("宣武区前门西大街正阳市场1号楼中部");addressList.add("宣武区宣武门东大街24号越秀饭店西配楼一层");addressList.add("宣武区马莲道路11号");addressList.add("宣武区白广路北口综合服务楼2楼首层");addressList.add("宣武区建功南里3号楼首层");addressList.add("宣武区广安门外大街甲180号中国新纪元大厦一层");addressList.add("西城区西单北大街堂子胡同9号地下一层");addressList.add("西城区新街口北大街1号1号楼一层");addressList.add("西城区西直门南大街甲15-6");addressList.add("西城区西直门外大街132号一层+地下一层");addressList.add("西城区车公庄大街丙4号一层+二层");addressList.add("西城区阜成门大街2号万通新世界商城地下一层");addressList.add("丰台区方庄芳古园一区商住楼8幢B1+F1");addressList.add("丰台区樊家村甲3号1层");addressList.add("丰台区丰管路16号11号楼首层十二号");addressList.add("丰台区西四环路甲88号");addressList.add("丰台区西四环南路8号-1号楼首层+二层");addressList.add("大兴区黄村卫星城兴丰街15号星城商厦一层北侧");addressList.add("大兴区黄村镇兴丰大街东侧火神庙商业中心F座商业楼一层");addressList.add("大兴区绿地中央广场乐购超市一层");addressList.add("大兴区西红门京良路南侧乐家商业中心西侧一层");addressList.add("通州区马驹桥镇9号百尚生活广场一层");addressList.add("北京经济开发区西环北路18号F1+F2");addressList.add("经济技术开发区天宝园五里二区A1+A2户一层");addressList.add("经济技术开发区文化园东路6号北京经开汇展中心1-2层");addressList.add("丰台区马家堡居住区中区公建(时帆大厦)1、2层");addressList.add("丰台区海户屯北京新世纪服装商贸城一层南侧");addressList.add("丰台区南四环中路城南嘉园益城园14号楼一、二层");addressList.add("北京丰台区南三环东路成寿寺路2号分钟寺阳光新生活购物广场");addressList.add("丰台区风格与林苑甲9号楼1层102");addressList.add("丰台区大红门西路26号银泰百货B1");addressList.add("朝阳区朝外大街东大桥路1号楼");addressList.add("朝阳区朝阳门外大街19号(一层东侧)");addressList.add("朝阳区金台里甲15号");addressList.add("朝阳区呼家楼京广中心首层");addressList.add("朝阳区工体北路11-1号");addressList.add("朝阳区团结湖路7号");addressList.add("朝阳区安慧里二区4号1、2、3层");addressList.add("朝阳区和平西街21号天丰利市场首层北侧F1");addressList.add("朝阳区小营东路3号北京凯基伦购物中心一层西侧");addressList.add("朝阳区惠新西街23号");addressList.add("朝阳区樱花园东街5号新化信北侧一、二层");addressList.add("延庆县东外大街4号首层大门西侧");addressList.add("北京市延庆县延庆镇妫水北街39号A座1层");addressList.add("门头沟区门头沟路1号首层");addressList.add("北京市门头沟区双峪环岛东南角熙旺中心一层");addressList.add("北京市门头沟区新桥大街80号京客隆一层+二层");addressList.add("朝阳区洼里乡北苑路东易初莲花超市一层");addressList.add("朝阳区安立路68号阳光广场一层西门北侧");addressList.add("朝阳区北苑路158号首层");addressList.add("平谷区新平北路世纪广场东侧祥和宾馆首层");addressList.add("密云县鼓楼南大街10号");addressList.add("密云县鼓楼南大街5号");addressList.add("怀柔区开放路东侧下元市场南侧京客隆一二层");addressList.add("西城区北三环中路18号");addressList.add("朝阳区左家庄新源街24号");addressList.add("朝阳区霄云路27号中国庆安大厦首层西侧");addressList.add("北京市朝阳区西坝河西里23号一层部分");addressList.add("朝阳区静安西街10号国展宾馆一层");addressList.add("北京市朝阳区曙光西里甲5号凤凰置地广场凤凰新天地B104号商铺");addressList.add("朝阳区劲松4区401楼");addressList.add("朝阳区松榆里28号楼松榆里商场一层北侧");addressList.add("朝阳区广渠路31号");addressList.add("北京市朝阳区潘家园东里甲30号楼");addressList.add("朝阳区东三环中路65号一层+地下一层");addressList.add("朝阳区广渠路南侧44号F1+F2");addressList.add("北京市朝阳区天辰东路8-10-12号");addressList.add("朝阳区林萃西里16号楼北京华润万家超市1层");addressList.add("朝阳区黄寺大街15号北京城乡黄寺商厦");addressList.add("北京市朝阳区祁家豁子8号");addressList.add("朝阳区胜古南里甲34号一层和二层");addressList.add("东四环路大郊亭商业街5号院东侧");addressList.add("朝阳区百子湾12号大成国际中心1号楼1层");addressList.add("朝阳区朝阳路十里堡5号云柏商厦一层西侧");addressList.add("朝阳区石佛营东里117号楼首层");addressList.add("朝阳区八里庄西里99号楼-1层106,107号");addressList.add("朝阳区南四环成寿寺路308号北京城外诚家居广场停车广场");}/*** A placeholder fragment containing a simple view.*/public static class PlaceholderFragment extends Fragment {public PlaceholderFragment() {}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_main, container,false);return rootView;}}}

百度Android地图SDK地理编码及标注相关推荐

  1. 百度 android tts sdk,百度Android语音合成(TTS)SDK使用方法

    语音合成是实现人机语音交互,建立一个有听和讲能力的交互系统所必需的关键技术.随着语音技术的发展,百度自主研发了语音合成系统(TTS),功能是接受用户发送的文本,生成语音发送给用户. 这篇文章将介绍如何 ...

  2. 高德地图api 地理编码(地址-->坐标)geocoder.getLocation在官方可以测试出结果,下载代码到本地却用不了 问题解决

    问题 高德地图api 地理编码(地址-->坐标)功能,通过输入 地址信息 得到 经纬度信息.geocoder.getLocation在官方可以测试出结果,下载代码到本地却用不了. 官方示例测试, ...

  3. 百度地图 雷达/地理编码 功能使用

    最近一直在优化软件的bug.. 然后后面可能又要大改.. 所以趁这两天有时间赶紧码两篇博文..=.= 地图功能可以说是现在APP中最常用的功能- 呃.. 之一..  不管是电商,社交,o2o,b2c, ...

  4. Android谷歌地图地理编码,谷歌地图API地理编码多个地点

    我设置了一个小js代码来对一些位置和地点进行地理编码,而不是在地图上.我可以很容易地做一个位置,但我不能让它在两个位置工作.我的工作代码如下,但只针对一个位置. var geocoder = new ...

  5. 百度android地图开发文档,简介-百度地图开发文档

    目录1 JavaScript API功能介绍 2 面向的读者 3 坐标转换 4 版本说明及申请API ak 5 获取JavaScript API服务方法 6 开发移动平台上的地图应用 7 Https ...

  6. java 地图控件_控件交互-与地图交互-开发指南-Android 地图SDK | 高德地图API

    控件是指浮在地图图面上的一系列用于操作地图的组件,例如缩放按钮.指南针.定位按钮.比例尺等. UiSettings 类用于操控这些控件,以定制自己想要的视图效果.UiSettings 类对象的实例化需 ...

  7. 高德离线地图开发 java_使用离线地图-创建地图-开发指南-Android 地图SDK | 高德地图API...

    高德3D 地图 SDK支持离线地图功能.(2D 地图 SDK 不支持离线地图功能) 离线地图可满足在无网络环境下查看地图信息的需求,在设备本地有离线地图数据的情况下,SDK 会优先加载离线地图. 离线 ...

  8. java 高德地图错误码_错误码对照表-实用工具-开发指南-Android 地图SDK | 高德地图API...

    新版响应码状态描述问题排查策略 1000请求正常服务调用正常,有结果返回 1001开发者签名未通过1.开发者在Key控制台中,开启了"数字签名"功能,但没有按照指定算法生成&quo ...

  9. 高德离线地图开发 java_自定义地图-创建地图-开发指南-Android 地图SDK | 高德地图API...

    简介 自 Android 3D 地图 SDK v5.2.0起,高德地图支持使用可视化自定义地图模版改变底图颜色和样式,实现可视化的编辑和控制显示地图元素. 创建样式文件 创建地图样式 高德地图开放平台 ...

  10. android 混淆高德地图,开发注意事项-创建工程-开发指南-Android 地图SDK | 高德地图API...

    添加高德 Key 为了保证高德 Android SDK 的功能正常使用,您需要申请高德 Key 并且配置到项目中. 项目的 "AndroidManifest.xml" 文件中,添加 ...

最新文章

  1. ubuntu / 18.04 系统上配置 DHCP Server
  2. Android构建流程——篇四
  3. Java中通过ActionEvent判断是哪个按钮
  4. HDU - 5920 Ugly Problem(Java大数+贪心)
  5. 计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和...
  6. Beam概念学习系列之Pipeline Runners
  7. C++四种强制类型转换
  8. LeetCode 1516. Move Sub-Tree of N-Ary Tree(DFS)
  9. 国际空间站20年花掉超千亿美金,一些人开始觉得它“没啥用”了
  10. python自动数据结构_Python 数据结构
  11. bzoj 3751: [NOIP2014]解方程(同余系)
  12. 8.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 指标监控与报警
  13. iOS线程之——NSCondition
  14. java集合系列——Map之TreeMap介绍(九)
  15. java中static和final修饰符
  16. 离散考试题计算机,离散数学试题及答案_离散数学试题库_离散数学试卷及答案...
  17. CAD 卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件【转载】
  18. 华为手机无线投屏到win10笔记本电脑
  19. 功能性与非功能性需求
  20. AM2120单总线温湿度传感器移植与应用

热门文章

  1. Linux基础-日志管理
  2. 遗传算法pid matlab程序解释,关于遗传算法的pid整定问题
  3. 九大背包问题专题--背包问题求方案数
  4. 检查Telerik UI以使用UWP作为PVS-Studio的入门方法
  5. 淘宝网上卖F22飞机,一群强人提问
  6. 「或许我们都应该学会接受,喜欢的人不一定喜欢自己吧~」电影《盛夏未来》戳心台词!世界上没有那么多刚刚好~
  7. (四)git储藏与清理
  8. windbg挂代理下载pdb
  9. 【无标题】500- Filtered request failed.
  10. python中eval()函数的作用及使用方法