最近项目需要用到高德地图,因为涉及到云图,集成的时候发现不少坑。这些坑基本上网上都有教程,或类似已经踩过的坑。
但是高德自定义图标的时候只提供了。。
今天就来说说,一些度娘比较少的给mark加载网络上的图片。
思路是这样的:
首先,加载网络嘛,肯定要考虑用高德提供的 frombitmap方法喽。
可是bitmap也没有直接就可以加载网络图片的方法。只好另想一些比较歪门邪路的方法了。。。嘿嘿。。。
我想很多人都应该想到了,那就是借助布局 放一个imageview 上去,然后把布局文件转化成一张图片,放到mark的icon里就ok啦。
这样。我们就可以在imageview加载图片的时候做手脚,(●'◡'●)。。
首先请大家观赏下 布局文件的代码:
其实就是一个imageview.
接下来再观赏一下 加载网络图标的核心代码:
datasBean.getContent() 就是网络图片的url.
markerOption.icon(BitmapDescriptorFactory.fromBitmap(setGeniusIcon(datasBean.getContent()))); //此段代码用的是imageloader加载图片到view 上好啦。到此就是所有的核心代码啦。小伙伴们,可以在布局里面自定义任何自己想用的布局哦。这样就可以实现更好的自定义效果哦//options参数是imageloader提供的
public Bitmap setGeniusIcon(String url) { Bitmap bitmap = null; View view = View.inflate(this, R.layout.pokemon_genius_icon, null); imageView imageView = (CircleImageView) view.findViewById(R.id.pokemon_image_icon); if (options != null) { ImageLoader.getInstance().displayImage(url, imageView, options); } bitmap = convertViewToBitmap(view); return bitmap; } //view转化为图片的方法,网上类似的方法有很多public static Bitmap convertViewToBitmap(View view) { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); return bitmap; }
新人新帖。忙里偷闲写一下。如果觉得还不错,赞一下呗!