我如何控制一个地面覆盖相对于地图功能的z指数



我正在使用android谷歌地图API V2,我想在地图功能(例如,街道名称,城镇名称,公园等)的顶部绘制一个GroundOverlay。现在,我的GroundOverlay工作得很好,但如果我的覆盖层上碰巧写了街道名称,它就会变得不可读,因为谷歌地图也选择在所有东西的顶部绘制街道名称,从而部分模糊了我的覆盖。

我是否可以重载GroundOverlay的某些功能,或者以某种方式使其最后绘制,在地图上的其他所有内容之上?

改变GroundOverlay的z-index并不能解决这个问题,因为GroundOverlay的z-index是相对于其他GroundOverlay的,而不是相对于其他地图特征。

你不能在地图特征上强制叠加。

你只能使用卫星模式(或者没有地图贴图),在这种模式下街道名称和其他东西根本不会被绘制出来。

我建议在gmaps-api-issues上发布一个特性请求来禁用它们。

据我所知,你不能将GroundOverlays或TileOverlays放在标签的顶部。最好的选择可能是使用不同的地图类型。您可能正在使用默认的MAP_TYPE_NORMAL。这可以在创建映射后进行更改(即在onMapReady方法中使用mMap.setMapType(...)方法)。以下是一些可能性:

不带标签的映射类型

MAP_TYPE_SATELLITEMAP_TYPE_NONE不包含标签。如果你不需要任何地图数据的地面覆盖之外,使用MAP_TYPE_NONE将节省移动数据。

MAP_TYPE_NORMAL +自定义地图样式

您可以使用样式向导轻松创建自己的地图样式。它允许您创建完全排除标签的样式(以及其他内容)。一旦你创建了一个你喜欢的风格,你可以复制由该网站生成的JSON代码,并将其添加到项目文件res/raw/style_json.json。然后可以像这样应用样式:

mMap.setMapType( GoogleMap.MAP_TYPE_NORMAL );
try
{
    boolean success = mMap.setMapStyle(
            MapStyleOptions.loadRawResourceStyle(
                    getContext(), R.raw.style_json ) );
    if( !success )
    {
        Log.e( TAG, "Style parsing failed." );
    }
}
catch( Resources.NotFoundException e )
{
    Log.e( TAG, "Can't find style. Error: ", e );
}

MAP_TYPE_NONE +自定义地图贴图

如果你需要有标签在你的地面覆盖之外,你可以添加一个非谷歌地图瓷砖的TileOverlay(如OpenStreetMap提供的)。这些通常包括地图块本身中的标签。所以,如果你的GroundOverlay添加了更高的z指数,它将出现在这些其他地图瓷砖的顶部!

最新更新