实现自己的 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。
我使用的是 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。