在百度地图上标注大量地址,如“海淀区上地十街10号”
eclipse+ADT,百度Android地图SDK v3.6.0
图中包含绿色的标记“起”以及红色标记“A”,从而可以在地图上直观的查看“起”与其他标注之间的位置关系,支持缩放。
1、地理编码,将地址转换为经纬度
第一步,创建地理编码检索实例;
第二步,创建地理编码检索监听者;
第三步,设置地理编码检索监听者;
第四步,发起地理编码检索;
1、标注,在地图上根据经纬度添加图标
(a)
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()); } } @Override public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { // 没有找到检索结果 } // 获取反向地理编码结果 } };
SDKInitializer.initialize(getApplicationContext());
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; @Override protected 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()); } } @Override public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { // 没有找到检索结果 } // 获取反向地理编码结果 } }; @Override public 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 block e.printStackTrace(); } } @Override public 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() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main, container, false); return rootView; } } }