Android百度地图开发(三)多标注及对应信息弹窗显示
2017-01-24 18:06
519 查看
接上篇Android百度地图开发(二)定位之手动定位
(本篇只给出相关代码供参考,其余代码需自行补全,望耐心参考)
1.添加标注及信息弹窗声明如下(为方便理解,声明三个标注并用不同的图标显示):
2.对声明进行赋值,写在布局初始化各种findViewById之后即可
3.添加初始化方法如下
说明:声明三个标注点显示标注信息,提前写好Fire实体,通过new初始化fire1、fire2、fire3,并通过setExtraInfo传入
4.在第2步代码后继续写如下代码(调用第3步的初始化方法,然后绑定标注监听事件及信息弹窗监听事件)
5.补全其余代码,调通运行
注意:声明的实体要implements Serializable,否则会报错,模版MarkerFire的class文件及对应xml布局文件调用部分代码如下
如果还有问题或更好方法,欢迎留言讨论,如果是代码补全问题,请自行补充Android基础知识。
(本篇只给出相关代码供参考,其余代码需自行补全,望耐心参考)
1.添加标注及信息弹窗声明如下(为方便理解,声明三个标注并用不同的图标显示):
//标注 private Marker mMarkerA; private Marker mMarkerB; private Marker mMarkerC; private InfoWindow mInfoWindow; // 初始化全局 bitmap 信息,不用时及时 recycle BitmapDescriptor bdA; BitmapDescriptor bdB; BitmapDescriptor bdC;
2.对声明进行赋值,写在布局初始化各种findViewById之后即可
bdA = BitmapDescriptorFactory .fromResource(R.drawable.icon_marka); bdB = BitmapDescriptorFactory .fromResource(R.drawable.icon_markb); bdC = BitmapDescriptorFactory .fromResource(R.drawable.icon_markc);
3.添加初始化方法如下
public void init 4000 Overlay() { //声明三个标注点 LatLng llA = new LatLng(39.963175, 116.400244); LatLng llB = new LatLng(39.942821, 116.369199); LatLng llC = new LatLng(39.939723, 116.425541); //弹窗 MarkerOptions ooA = new MarkerOptions().position(llA).icon(bdA) .zIndex(7).animateType(MarkerOptions.MarkerAnimateType.grow); mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA)); Fire fire1 = new Fire("2017-7-7", "1", "11"); Bundle bundle1 = new Bundle(); bundle1.putSerializable("Fire", fire1); mMarkerA.setExtraInfo(bundle1); //弹窗 MarkerOptions ooB = new MarkerOptions().position(llB).icon(bdB) .zIndex(7).animateType(MarkerOptions.MarkerAnimateType.grow); mMarkerB = (Marker) (mBaiduMap.addOverlay(ooB)); Fire fire2 = new Fire("2017-7-7", "2", "22"); Bundle bundle2 = new Bundle(); bundle2.putSerializable("Fire", fire2); mMarkerB.setExtraInfo(bundle2); //弹窗 MarkerOptions ooC = new MarkerOptions().position(llC).icon(bdC) .zIndex(7).animateType(MarkerOptions.MarkerAnimateType.grow); mMarkerC = (Marker) (mBaiduMap.addOverlay(ooC)); Fire fire3 = new Fire("2017-7-7", "3", "33"); Bundle bundle3 = new Bundle(); bundle3.putSerializable("Fire", fire3); mMarkerC.setExtraInfo(bundle3); ArrayList<BitmapDescriptor> giflist = new ArrayList<BitmapDescriptor>(); giflist.add(bdA); giflist.add(bdB); giflist.add(bdC); }
说明:声明三个标注点显示标注信息,提前写好Fire实体,通过new初始化fire1、fire2、fire3,并通过setExtraInfo传入
4.在第2步代码后继续写如下代码(调用第3步的初始化方法,然后绑定标注监听事件及信息弹窗监听事件)
initOverlay(); /** * 标注点击监听 */ mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() { public boolean onMarkerClick(final Marker marker) { //弹窗点击监听 InfoWindow.OnInfoWindowClickListener listener = null; listener = new InfoWindow.OnInfoWindowClickListener() { @Override public void onInfoWindowClick() { //点击弹窗后要执行的代码,如Toast:您点击了弹窗 } }; //弹窗要展示的信息实体 Fire fire = new Fire(); //获取之前传递的Fire fire = (Fire) marker.getExtraInfo() .getSerializable("Fire"); //mBaiduMap.hideInfoWindow(); //渲染布局模版 MarkerFire markerFire = new MarkerFire( getActivity(), fire); BitmapDescriptor descriptor = BitmapDescriptorFactory .fromView(markerFire); //获取标注坐标显示对应弹窗 LatLng ll = marker.getPosition(); mInfoWindow = new InfoWindow(descriptor, ll, -47, listener); mBaiduMap.showInfoWindow(mInfoWindow); return true; } });说明:提前写好要渲染的模版MarkerFire,用于信息弹窗的布局及信息展示
5.补全其余代码,调通运行
注意:声明的实体要implements Serializable,否则会报错,模版MarkerFire的class文件及对应xml布局文件调用部分代码如下
public class MarkerFire extends LinearLayout { private Context mContext = null; private View mView = null; private TextView fire_time; public MarkerFire(Context context, Fire fire) { super(context); mContext = context; initView(); setfireInfo(fire); } private void initView() { mView = LayoutInflater.from(mContext).inflate(R.layout.item_fragment_marker_fire, null); fire_time = (TextView) mView.findViewById(R.id.marker_fire_time); this.addView(mView); } /** * 设置poi详情信息 * * @param fire */ private void setfireInfo(Fire fire) { fire_time.setText(fire.getFire_time()); } public MarkerFire(Context context, AttributeSet attrs) { super(context, attrs); } }
如果还有问题或更好方法,欢迎留言讨论,如果是代码补全问题,请自行补充Android基础知识。
相关文章推荐
- Android开发百度地图只显示经纬度,而没有地址信息
- android 用MyEclipse开发时LogCat不显示控制台信息解决办法
- android开发-使用Toast显示提示信息框
- 华为手机在开发Android调试时logcat不显示输出信息的解决办法
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
- Android手机在开发调试时logcat不显示输出信息的解决办法
- android开发_如何获取android应用程序的相关信息并显示
- Android手机在开发调试时logcat不显示输出信息的解决办法
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
- Android 百度地图开发(一)---申请API Key和在项目中显示百度地图
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
- .Android开发在Eclipse环境中无法显示提示信息This element neither has attached
- Android百度地图开发(五)公交线路详情搜索、多条线路显示
- Android手机在开发调试时logcat不显示输出信息的解决办法
- Android手机在开发调试时logcat不显示输出信息的解决办法
- 华为手机在开发Android调试时logcat不显示输出信息的解决办法
- 华为手机在开发Android调试时logcat不显示输出信息的解决办法
- android百度地图-定位并显示位置信息
- Android手机在开发调试时logcat不显示输出信息的解决办法