私は Google Map API v2 を使用している Android アプリケーションを開発しています。カスタム マーカーを使用して、地図上にユーザーの位置を表示する必要があります。
各マーカーには、URL からユーザーの写真が表示されます。画像はサーバーから非同期モードでダウンロードする必要があります。例については、添付のスクリーンショットを参照してください。
マーカーに画像やカスタム情報を追加するにはどうすればよいですか?
ベストアンサー1
の中にGoogle マップ API v2 デモMarkerDemoActivity
カスタム画像が GoogleMap にどのように設定されるかを確認できるクラスがあります。
// 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 開発者ページから。
ここで、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);
あなたしなければならないバックグラウンドスレッドから画像をダウンロードします(非同期タスクまたはボレーまたは翻訳そのために)。
その後、をBitmapFactory.decodeResource(getResources(), R.drawable.user_picture_image)
ダウンロードしたイメージに置き換えることができますbmImg
。