1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 百度Android地图SDK地理编码及标注

百度Android地图SDK地理编码及标注

时间:2022-06-08 06:55:50

相关推荐

百度Android地图SDK地理编码及标注

解决问题:

在百度地图上标注大量地址,如“海淀区上地十街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;}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。