实现自己的 TileServerProvider

Implementing own TileServerProvider

我使用的是 HERE Maps SDK Lite Edition 版本 4.7.3.0,它可以使用自己的 TileServerProvider 实现来添加 RasterLayer(参见 documentation)。

我通过将 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 的参数。这里出了什么问题?

在我的生产代码中,我没有直接为参数 maxZoomLevel 输入 17,而是从一个函数中获取了这个值。但是这个函数却 return 0 相反。

很高兴为您提供帮助。 要加载自定义栅格图层,URL 的格式应如下所示:

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

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

  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 代码实现,请分享集成在可从下面下载的示例应用程序之一中的代码实现 link。

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