[解決済み] ベクターアセットアイコンを使ったアンドロイドのグーグルマップのカスタムマーカー
2023-03-04 20:56:26
質問
マップマーカーアイコンに ベクターアセット ファイルで、googleがこのように表示する方法を、プログラム的に実現することができます。
更新しました。
map.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.your_vector_asset))
.title(title);
は、ベクターアセットを扱うときには機能しません。質問する主な理由 上記のコードでのエラーです。
java.lang.IllegalArgumentException: 画像のデコードに失敗しました。提供された画像はBitmapである必要があります。
どのように解決するのですか?
私はまったく同じ要件を探していて、この質問を見て最初はうれしかったのですが、@Shuddhと同じように、与えられた答えに満足しませんでした。
私の話を短くするために、私はこの要件に次のコードを使用しています。
private BitmapDescriptor bitmapDescriptorFromVector(Context context, @DrawableRes int vectorDrawableResourceId) {
Drawable background = ContextCompat.getDrawable(context, R.drawable.ic_map_pin_filled_blue_48dp);
background.setBounds(0, 0, background.getIntrinsicWidth(), background.getIntrinsicHeight());
Drawable vectorDrawable = ContextCompat.getDrawable(context, vectorDrawableResourceId);
vectorDrawable.setBounds(40, 20, vectorDrawable.getIntrinsicWidth() + 40, vectorDrawable.getIntrinsicHeight() + 20);
Bitmap bitmap = Bitmap.createBitmap(background.getIntrinsicWidth(), background.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
background.draw(canvas);
vectorDrawable.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
と使用例を示します。
.icon(bitmapDescriptorFromVector(this, R.drawable.ic_car_white_24dp));
注:ベクターには別のバウンディングを使用するとよいでしょう。私のベクターは24dpのサイズで、背景として48dpのpng画像(青い部分、これもベクターになり得ます)を使用しました。
UPDATE: リクエストがあったのでスクリーンショットを追加しました。
関連
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] キャンバスに複数行のテキストを描画する
-
[解決済み] 非推奨のandroid.support.v4.app.ActionBarDrawerToggleの置き換え方法
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] 実行に失敗しました app:processDebugResources Android Studio
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] vector drawable から Bitmap を取得する
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] 実行に失敗しました app:processDebugResources Android Studio