Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌地图文本覆盖-安卓_Android_Google Maps - Fatal编程技术网

Android 谷歌地图文本覆盖-安卓

Android 谷歌地图文本覆盖-安卓,android,google-maps,Android,Google Maps,我正试图在谷歌地图上为一些建筑物涂上如下颜色: 我可以在建筑顶部覆盖多边形对象,但我不能在其顶部应用标签(建筑ID) 如何使用安卓系统在建筑物上覆盖如上图所示的文字?我知道这个问题有点老了,但我刚刚为自己的项目找到了解决方法,并想与大家分享一下。该方法是创建文本的位图图像,然后将其显示为多边形上的GroundOverlay,zIndex大于多边形 如果您有多边形的板条列表,可以执行以下操作: private void showText(List<LatLng> latLngList

我正试图在谷歌地图上为一些建筑物涂上如下颜色:

我可以在建筑顶部覆盖多边形对象,但我不能在其顶部应用标签(建筑ID)


如何使用安卓系统在建筑物上覆盖如上图所示的文字?

我知道这个问题有点老了,但我刚刚为自己的项目找到了解决方法,并想与大家分享一下。该方法是创建文本的位图图像,然后将其显示为多边形上的GroundOverlay,zIndex大于多边形

如果您有多边形的板条列表,可以执行以下操作:

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)
    );
}
如果您只需要文本,那么您的布局“R.layout.my_text_layout”可以是带有文本视图的布局

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;
}