如何通过 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 复制到您自己的项目中。
我想通过 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 复制到您自己的项目中。