百度地图动态添加marker的图片显示问题
2017-11-30 11:43
615 查看
最重要的就是加载完成图片之后在子线程添加Marker操作
网上说的通过view转成bitmap感觉没什么用
代码如下:代码如下:
废话不多说直接上代码:
修改之前的代码(Marker图片不显示):
修改之后的代码(多个Marker的图片都可以显示):
参考:http://blog.csdn.net/bob_xing_yang/article/details/53161033
网上说的通过view转成bitmap感觉没什么用
代码如下:代码如下:
Glide.with(mContext).load(mjbBean.getPicUrl()).into(new SimpleTarget<Drawable>() { @Override public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) { iconView.setBackgroundDrawable(resource); //3.通过view构建BitmapDescriptor BitmapDescriptor bitmap = BitmapDescriptorFactory.fromView(custom_layout); //3.1构建MarkerOption,用于在地图上添加Marker MarkerOptions option = new MarkerOptions().position(llA) .animateType(MarkerOptions.MarkerAnimateType.grow) .zIndex(finalI).period(10).title(mjbBean.getName()).icon(bitmap); // 掉下动画 // option.animateType(MarkerOptions.MarkerAnimateType.drop); overlayOptions.add(option); //4.构建Marker Marker marker = (Marker) mBaiduMap.addOverlay(option); //4.1使用marker携带info信息,当点击事件的时候可以通过marker获得info信息 Bundle bundle = new Bundle(); // info必须实现序列化接口 bundle.putSerializable("info", mjbBean); marker.setExtraInfo(bundle); } });
废话不多说直接上代码:
修改之前的代码(Marker图片不显示):
//百度地图--=添加Marker>自定义view public void addOverlaysToMap() { //每个marker进入的方式使用集合存放 List<OverlayOptions> overlayOptions = new ArrayList<OverlayOptions>(); for (int i = 0; i < jbList.size(); i++) { //1.自定义view View custom_layout= View.inflate(this, R.layout.baidu_marker_layout, null); final ImageView iconView = (ImageView) custom_layout.findViewById(R.id.main_maker_iv); TextView nameView = (TextView) custom_layout.findViewById(R.id.tv_name); //2.关联数据 JdlbBean mjbBean = jbList.get(i); LatLng llA = new LatLng(mjbBean.getLat(), mjbBean.getLon()); nameView.setText(mjbBean.getName()); KLog.d(mjbBean.getPicUrl()); Glide.with(mContext).load(mjbBean.getPicUrl()).into(new SimpleTarget<Drawable>() { @Override public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) { iconView.setBackgroundDrawable(resource); } }); //设置成功后把View转换成Bitmap Bitmap viewBitmap = getViewBitmap(custom_layout); //3.通过view构建BitmapDescriptor // BitmapDescriptor bitmap = BitmapDescriptorFactory.fromView(view); BitmapDescriptor bitmap = BitmapDescriptorFactory.fromBitmap(viewBitmap); //3.1构建MarkerOption,用于在地图上添加Marker MarkerOptions option = new MarkerOptions().position(llA) .animateType(MarkerOptions.MarkerAnimateType.grow) .zIndex(i).period(10).title(mjbBean.getName()).icon(bitmap); // 掉下动画 // option.animateType(MarkerOptions.MarkerAnimateType.drop); overlayOptions.add(option); //4.构建Marker Marker marker = (Marker) mBaiduMap.addOverlay(option); //4.1使用marker携带info信息,当点击事件的时候可以通过marker获得info信息 Bundle bundle = new Bundle(); // info必须实现序列化接口 bundle.putSerializable("info", mjbBean); marker.setExtraInfo(bundle); } // 将地图显示最开始一个marker的位置 JdlbBean mjbBean = jbList.get(0); LatLng latLng = new LatLng(mjbBean.getLat(), mjbBean.getLon()); MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng); // mBaiduMap.setMapStatus(msu); mBaiduMap.animateMapStatus(msu);// 动画的方式到中间 }
修改之后的代码(多个Marker的图片都可以显示):
//百度地图--=添加Marker>自定义view
public void addOverlaysToMap() {
//每个marker进入的方式使用集合存放
final List<OverlayOptions> overlayOptions = new ArrayList<OverlayOptions>();
for (int i = 0; i < jbList.size(); i++) {
//1.自定义view
final View custom_layout = View.inflate(this, R.layout.baidu_marker_layout, null);
final ImageView iconView = (ImageView) custom_layout.findViewById(R.id.main_maker_iv);
TextView nameView = (TextView) custom_layout.findViewById(R.id.tv_name);
//2.关联数据
final JdlbBean mjbBean = jbList.get(i);
final LatLng llA = new LatLng(mjbBean.getLat(), mjbBean.getLon());
nameView.setText(mjbBean.getName());
KLog.d(mjbBean.getPicUrl());
final int finalI = i;
Glide.with(mContext).load(mjbBean.getPicUrl()).into(new SimpleTarget<Drawable>() { @Override public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) { iconView.setBackgroundDrawable(resource); //3.通过view构建BitmapDescriptor BitmapDescriptor bitmap = BitmapDescriptorFactory.fromView(custom_layout); //3.1构建MarkerOption,用于在地图上添加Marker MarkerOptions option = new MarkerOptions().position(llA) .animateType(MarkerOptions.MarkerAnimateType.grow) .zIndex(finalI).period(10).title(mjbBean.getName()).icon(bitmap); // 掉下动画 // option.animateType(MarkerOptions.MarkerAnimateType.drop); overlayOptions.add(option); //4.构建Marker Marker marker = (Marker) mBaiduMap.addOverlay(option); //4.1使用marker携带info信息,当点击事件的时候可以通过marker获得info信息 Bundle bundle = new Bundle(); // info必须实现序列化接口 bundle.putSerializable("info", mjbBean); marker.setExtraInfo(bundle); } });
}
// 将地图显示最开始一个marker的位置
JdlbBean mjbBean = jbList.get(0);
LatLng latLng = new LatLng(mjbBean.getLat(), mjbBean.getLon());
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
// mBaiduMap.setMapStatus(msu);
mBaiduMap.animateMapStatus(msu);// 动画的方式到中间
}
参考:http://blog.csdn.net/bob_xing_yang/article/details/53161033
相关文章推荐
- Android 百度地图添加自定义marker(覆盖物)不显示图片的解决方法
- 百度地图 循环加载marker并添加多个信息窗口,解决只显示最后一个窗口信息的问题
- 关于动态图片轮播以及图片显示的问题以及提示代码是死的,和重定向的时候传递值得问题,以及s:select和s:radio的传值以及默认值和回显的问题
- 在WinCE下绘制半透的效果要注意的问题+WINCE 下创建动态显示图片窗口
- 在适配器的构造方法添加假数据,然后请求数据后listview等的图片显示不完整,刷新之后才显示的问题。
- Xcode9中,添加图片素材无法显示的问题
- android 百度地图 通过剪裁图片添加 Marker
- 百度地图的一些踩坑 marker网络图片不显示
- 百度地图嵌入弹出层,无法准确正确显示marker标记到中心位置的问题
- 解决javascript动态改变img的src属性图片不显示问题
- UISegmentedControl添加图片不显示的问题
- 解决Pycharm无法显示动态图片的问题
- Qt 打包发布 不能动态打开图片显示问题
- 安卓学习之使用listview设置adapter时,解决动态显示图片的问题
- 如何在启用SharePoint浏览器功能的InfoPath 表单中添加托管代码以动态地加载并显示图片
- ExtJs4.x动态添加组件无法正常显示问题
- GridView添加显示图片导致的view复用问题
- Ext.Panel 动态添加组件后,没有显示组件问题
- 正确的添加图片方法 - 解决UIImageView.image = UIImage(named: String)不显示图像的问题
- Android----高德地图多个Marker加载网络图片出现图片不显示问题