私はこのようなGoogleマップ上のいくつかの建物に色をしようとしています:Googleマップのテキストオーバーレイ - アンドロイド
私は適用できない建物の最上部にポリゴンオブジェクトをオーバーレイすることができていますが、イムその上にラベル(建物のID)が表示されます。
Androidで上記の画像に表示されているように、建物のテキストをオーバーレイするにはどうすればよいですか?
私はこのようなGoogleマップ上のいくつかの建物に色をしようとしています:Googleマップのテキストオーバーレイ - アンドロイド
私は適用できない建物の最上部にポリゴンオブジェクトをオーバーレイすることができていますが、イムその上にラベル(建物のID)が表示されます。
Androidで上記の画像に表示されているように、建物のテキストをオーバーレイするにはどうすればよいですか?
私はこの質問がちょっと古いことを知っていますが、私は自分のプロジェクトでこれをどうやって行うのかを考え出し、分かち合うと思っていました。この方法は、テキストのビットマップイメージを作成し、そのポリゴンよりも大きいzIndexを使用してポリゴンにGroundOverlayとして表示することです。
あなたは次の操作を行うことができ、あなたのポリゴンのLatLngsのリストを持っている場合は、次のテキストがあなたの上に表示されることになるでしょうので、
private void showText(List<LatLng> latLngList) {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (LatLng latLng : latLngList) {
builder.include(latLng);
}
googleMap.addGroundOverlay(new GroundOverlayOptions()
.positionFromBounds(builder.build())
.image(
BitmapDescriptorFactory.fromBitmap(
getBitmapFromView()
)
)
.zIndex(100)
);
}
.zIndex(100)部分が重要ですポリゴン。 (私は実際には最大zのインデックスが何であるかはわかりませんが、100は働きます)。
レイアウトをビットマップに変換する方法は次のとおりです。
private Bitmap getBitmapFromView() {
View customView = ((LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.my_text_layout, null);
customView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
customView.layout(0, 0, customView.getMeasuredWidth(), customView.getMeasuredHeight());
customView.buildDrawingCache();
Bitmap returnedBitmap = Bitmap.createBitmap(customView.getMeasuredWidth(), customView.getMeasuredHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
canvas.drawColor(Color.WHITE, PorterDuff.Mode.SRC_IN);
Drawable drawable = customView.getBackground();
if (drawable != null) {
drawable.draw(canvas);
}
customView.draw(canvas);
return returnedBitmap;
}
あなただけのテキストをしたい場合は、あなたのレイアウト「R.layout.my_text_layoutはただのTextViewでレイアウトすることができます。