谷歌地图上显示自定义View方法
来源:互联网 发布:形容女人的网络词汇 编辑:程序博客网 时间:2024/06/07 10:04
前段时间项目中嵌入了android高德地图,但是后来发现国外的客户反应高德地图加载很慢(高德地图显示国外地图的方法:在初始化时调用MapsInitializer.loadWorldGridMap(boolean) true 表示打开),后来在售后的不断反馈下决定尝试国内加载高德地图,国外加载谷歌地图,这样应该就能解决高德地图在国外加载超慢而且还不能显示卫星地图的情况了。
工作开始了,高德地图转Google地图进展还是挺顺利的,这两种地图api极其类似,方法名都高度保持一致,不过还是有不同的地方,其中有一个方法是将自定义view添加到Marker显示到地图上,高德地图有提供方法:
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView(view);但是Google地图没有这个方法,于是我就查看fromView()的源码,最终照葫芦画瓢成功的实现了一个Google地图版的fromView(),具体实现如下:
/** GoogleMap:根据传入的view,创建BitmapDescriptor对象 */public BitmapDescriptor fromView(Context context, View view) { FrameLayout frameLayout = new FrameLayout(context); frameLayout.addView(view); frameLayout.setDrawingCacheEnabled(true); Bitmap bitmap = getBitmapFromView(frameLayout); BitmapDescriptor bitmapDescriptor = fromBitmap(bitmap); bitmap.recycle(); return bitmapDescriptor;}/** Convert a view to bitmap */public Bitmap getBitmapFromView(View view) { try { banTextViewHorizontallyScrolling(view); view.destroyDrawingCache(); view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); Bitmap bitmap = view.getDrawingCache(); return bitmap != null ? bitmap.copy(Bitmap.Config.ARGB_8888, false) : null; } catch (Throwable ex) { Log.d(TAG, "getBitmapFromView: "); return null; }}/** 禁止TextView水平滚动 */private void banTextViewHorizontallyScrolling(View view) { if (view instanceof ViewGroup) { for (int index = 0; index < ((ViewGroup) view).getChildCount(); ++index) { banTextViewHorizontallyScrolling(((ViewGroup) view).getChildAt(index)); } } else if (view instanceof TextView) { ((TextView) view).setHorizontallyScrolling(false); }}使用方法如下:
View view = LayoutInflater.from(this).inflate(R.layout.amap_marker_layout, null);
BitmapDescriptor bitmapDescriptor = fromView(getActivity(), view);MarkerOptions option = new MarkerOptions() .position(lastLatLng) .icon(bitmapDescriptor) .zIndex(4) .draggable(false);这样就完美的将自定义view添加成Marker并显示在地图上了。Marker marker = mGoogleMap.addMarker(option);
第一次写博客,希望能帮到有需要的人。
阅读全文
1 0
- 谷歌地图上显示自定义View方法
- 高德地图上显示自定义View方法
- 百度地图创建InfoWindow自定义View显示
- 百度地图创建InfoWindow自定义View显示
- 实现地图上显示多mark点,自定义infoWindow,跳转高德地图和百度地图
- 在谷歌地图上显示您的位置
- MTStatusBarOverlay —— 在状态栏上显示自定义的View
- 自定义地图覆盖物(包括自定义View和动画的显示)
- 自定义View的显示
- HTML5 调用 GPSAPI 获取当前位置的坐标 显示在地图上(有包括百度地图与谷歌地图)
- Custom annotation view in Google Maps SDK(自定义注释在谷歌地图SDK)
- 四种常用的标准自定义View方法(上)
- View上显示倒计时
- Android 自定义view接收输入法输入的内容并显示在view上
- 调用谷歌地图js显示地图
- iOS View自定义窍门——UIButton实现上显示图片,下显示文字
- 百度地图显示自定义头像
- ViewGroup自定义View方法
- haproxy+mycat搭建高可用数据库
- mysql5.7主从复制原理及基本配置
- 大写"_"后面的字符, 三种方法及其时间比较
- 理解RESTful架构
- mysql 数据库的索引
- 谷歌地图上显示自定义View方法
- 整数划分的递归实现算法
- 小白笔记---------------------(算法总结)(1)
- LeetCode.83. Remove Duplicates from Sorted List(删除单链表中的重复元素)
- CEPH-FUSE指定文件系统挂载
- kali linux攻击机及windowsXp/Metasploit_linux靶机安装及在此基础上的蜜罐系统搭建(下)
- RESTful API 设计指南
- 安应用APP渗透测试方案
- 微信APP支付接口