如何通过 BruTile / SharpMap 在此处将地图添加为图块层?

How can I add here map as tile layer by BruTile / SharpMap?

我想通过 BruTile / SharpMap 将 Here maps 地图图块添加到我的地图中。

URL 方案在他们的文档中如下:

https://1.base.maps.cit.api.here.com/maptile/2.1/maptile/newest/normal.day/13/4400/2686/256/png8

?app_id={YOUR_APP_ID}

&app_code={YOUR_APP_CODE}

其中 13 是缩放级别,4400 是列,2686 是行。

这是我的代码,但是它超时了,而且地图是空的。 App id和app code是正确的,100%确定。可能是什么问题?

var networkRes = Networking.HasInternetConnection();

if (networkRes.Result == false)
    throw new Exception(networkRes.InfoMessage);

var uriString = "https://1.base.maps.cit.api.here.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8";

var customParams = new Dictionary<string, string>();
customParams.Add("app_id", "someappid");
customParams.Add("app_code", "someappcode");

var req = new TmsRequest(new Uri(uriString),"png" , customParams);

var provider = new WebTileProvider(req);

var tileSource = new TileSource(provider, new SphericalMercatorInvertedWorldSchema());

TileLayer tileLayer;

if (CacheWebMaps)
{
    var path = Path.Combine(MapCacheRoot, HEREBASELAYERNAME);
    tileLayer = new TileLayer(tileSource, HEREBASELAYERNAME, new Color(), true, path);
}
else
{
    tileLayer = new TileLayer(tileSource, HEREBASELAYERNAME);
}

tileLayer.SRID = 3857;

MapBox.Map.Layers.Add(tileLayer);

提前致谢!

您可以像这样创建 Here Maps 磁贴源:

var hereMapsTileSource = new HttpTileSource(new GlobalSphericalMercator(0, 8), "https://{s}.base.maps.cit.api.here.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?app_id=xWVIueSv6JL0aJ5xqTxb&app_code=djPZyynKsbTjIUDOBcHZ2g", new[] {"1", "2", "3", "4"}, name: "Here Maps Source");

我在 Samples\BruTile.Demo 中添加了一个示例(底部单选按钮)。 Here是我添加的代码。

我不确定 SharpMap 使用的 BruTile 版本是否支持 HttpTileSource。如果没有,您可以将 HttpTileSource 复制到您自己的项目中。