0

我正在使用 HERE Maps SDK Lite Edition 版本 4.7.3.0,它可以使用自己的 TileServerProvider 实现来广告 RasterLayer(请参阅文档)。

我通过将 SimpleTileServerProvider 与我自己的实现交换来编辑给定的示例。

      RasterLayer myCustomLayer = new RasterLayer("CUSTOM_LAYER",
          17,
          1001,
          new TileServerProvider() {
             @NonNull
             @NotNull
             @Override
             public String provideURL(long x, long y, long zoom) {
                return "myURI";
             }
          });

将这个 RasterLayer 添加到我的 MapView 时,调用了 provideURI,但只将 0 值传递给了 provideURI 的参数。这里出了什么问题?

4

2 回答 2

1

在我的生产代码中,我没有直接为参数 maxZoomLevel 输入 17,而是从函数中获取该值。但是这个函数确实返回了 0。

于 2021-05-28T11:20:42.593 回答
0

我很高兴能帮助你。要加载自定义 Raster 图层,URL 的格式应如下所示:

https://YourRasterTileService.com/zoom/xTile/yTile.png

我可以使用您在此处文档链接中提到的示例成功加载自定义栅格。

  String myCustomRasterLayerName = "my_custom_raster_layer";
  long maxZoom = 19;
  long drawOrder = 1000;
  TileServerProvider staticTileServerProvider = new SimpleTileServerProvider("https://a.tile.openstreetmap.org/{z}/{x}/{y}.png");

  RasterLayer rasterLayer = new RasterLayer(
          myCustomRasterLayerName,
          maxZoom,
          drawOrder,
          staticTileServerProvider);

  mapSceneConfig = new MapSceneConfig();
  mapSceneConfig.rasterLayers.add(rasterLayer);
  mapSceneConfig.customMapLayers.put(myCustomRasterLayerName, LayerState.ENABLED);

  mapView.getMapScene().loadScene(MapStyle.EMPTY, mapSceneConfig, new MapScene.LoadSceneCallback() {
      @Override
      public void onLoadScene(@Nullable MapScene.ErrorCode errorCode) {
          if (errorCode != null) {
              Log.d(TAG, "onLoadScene failed: " + errorCode.toString());
          }
      }
  });

如果您希望我进一步调查您的 TileServerProvider 代码实现,请分享集成在可从以下链接下载的示例应用程序之一中的代码实现。

https://github.com/heremaps/here-sdk-examples/tree/master/examples/latest/lite/android/MapOverlaysLite

于 2021-06-03T11:17:50.187 回答