我正在开发一个Android应用程序,使用的是谷歌 map API v2.我需要用自定义标记在 map 上显示用户位置.
每个标记将显示URL中用户的图片.必须以异步模式从服务器下载映像.有关示例,请参见所附的屏幕截图.
如何在标记中添加图像和自定义信息?
我正在开发一个Android应用程序,使用的是谷歌 map API v2.我需要用自定义标记在 map 上显示用户位置.
每个标记将显示URL中用户的图片.必须以异步模式从服务器下载映像.有关示例,请参见所附的屏幕截图.
如何在标记中添加图像和自定义信息?
在Google Maps API v2 Demo中有一个MarkerDemoActivity
类,你可以看到自定义图像是如何设置为谷歌 map 的.
// Uses a custom icon.
mSydney = mMap.addMarker(new MarkerOptions()
.position(SYDNEY)
.title("Sydney")
.snippet("Population: 4,627,300")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
因为这只是用一幅图像替换了标记,所以你可能想用Canvas
来画更复杂、更华丽的东西:
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(80, 80, conf);
Canvas canvas1 = new Canvas(bmp);
// paint defines the text color, stroke width and size
Paint color = new Paint();
color.setTextSize(35);
color.setColor(Color.BLACK);
// modify canvas
canvas1.drawBitmap(BitmapFactory.decodeResource(getResources(),
R.drawable.user_picture_image), 0,0, color);
canvas1.drawText("User Name!", 30, 40, color);
// add marker to Map
mMap.addMarker(new MarkerOptions()
.position(USER_POSITION)
.icon(BitmapDescriptorFactory.fromBitmap(bmp))
// Specifies the anchor to be at a particular point in the marker image.
.anchor(0.5f, 1));
这会将画布canvas1
绘制到画布GoogleMap mMap
上.代码应该(主要)说明问题,有很多教程教你如何画Canvas
.你可以从Android开发者页面上的Canvas and Drawables开始.
现在,您还需要从URL下载图片.
URL url = new URL(user_image_url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is);
你可以从后台线程下载图像(你可以使用AsyncTask、Volley或RxJava).
之后,您可以用下载的图像bmImg
替换BitmapFactory.decodeResource(getResources(), R.drawable.user_picture_image)
.