Android マップ API v2 を使用してカスタム形状のビットマップ マーカーを作成する方法 [重複] 質問する

Android マップ API v2 を使用してカスタム形状のビットマップ マーカーを作成する方法 [重複] 質問する

私は 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

おすすめ記事