2

我正在研究 mapbox android sdk。我可以显示我们的地图图块(png 栅格图块),但有些地区是透明的,并且在这些地方会出现 mapbox 地图。在另一个与谷歌地图相同的项目中,我已经这样做了,谷歌有一个选项,名称是:

googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);

删除了默认的谷歌地图,只显示我的图块,但在 mapbox android 中没有这样的选项,我很惊讶这个巨大的 sdk 没有这个基本选项,或者我很难找到。有没有人可以帮我解决这个问题?

可以说我已经从 mapbox 中删除了所有图层、来源和注释,然后添加了我们自己的栅格图块集:

 for (int i = 0; i < mapboxMap.getLayers().size(); i++) {
        mapboxMap.removeLayer(mapboxMap.getLayers().get(i));
    }

    for (int i = 0; i < mapboxMap.getSources().size(); i++) {
        mapboxMap.removeSource(mapboxMap.getSources().get(i));
    }

    for (int i = 0; i < mapboxMap.getAnnotations().size(); i++) {
        mapboxMap.removeAnnotation(mapboxMap.getAnnotations().get(i));
    }



webMapSource = new RasterSource(
            "web-map-source",
            new TileSet("tileset", "ourownwebsite.com?" +
                    "bbox={bbox-epsg-3857}" +
                    "&service=WMS" +
                    "&version=1.1.0" +
                    "&EXCEPTIONS=application/vnd.ogc.se_inimage" +
                    "&request=GetMap" +
                    "&layers=test:GSLD256" +
                    "&width=256" +
                    "&height=256" +
                    "&srs=EPSG:3857" +
                    "&format=image/png"), 256);

    mapboxMap.addSource(webMapSource);         
    // Add the web map source to the map.
    RasterLayer webMapLayer = new RasterLayer("web-map-layer", "web-map-source");
    mapboxMap.addLayer(webMapLayer);
4

1 回答 1

3

您可以使用其中一个mapboxMap.removeAnnotations()mapboxMap.clear()从地图中删除所有注释。

至于基础层,最接近的GoogleMap.MAP_TYPE_NONE是设置一个只包含背景层的样式。为此,请mapboxMap.setStyleJson使用包含类似于以下样式定义的字符串进行调用:

{
  "version": 8,
  "name": "Empty",
  "sources": {
  },
  "layers": [
    {
      "id": "background",
      "type": "background",
      "paint": {
        "background-color": "hsl(47, 26%, 88%)"
      }
    }
  ],
  "id": "empty"
}
于 2018-06-10T17:29:22.070 回答