我正在尝试向地图添加自定义 Microsoft.Maps.TileSource()。
我将uriConstructor设置为ASP.NET MVC应用程序中的WebAPI端点。我宁愿需要WebAPI端点的身份验证,但似乎没有一种方法可以通过回调请求发送托管网页的凭据。
是否可以为TileSource Web服务调用指定凭据?
答案 0 :(得分:1)
正确,使用Bing Maps无法做到这一点。我建议改为查看Azure地图。通过设置地图的transformRequest选项,然后创建一个平铺图层并将其添加到地图,可以使用Azure Maps实现。这是一个快速的代码示例:
<!DOCTYPE html>
<html>
<head>
<title>Tile Layer using X, Y, and Z - Azure Maps Web Control Samples</title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/css/atlas.min.css?api-version=1" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/js/atlas.min.js?api-version=1"></script>
<script type='text/javascript'>
var map;
function GetMap() {
//Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps
atlas.setSubscriptionKey('<Your Azure Maps Key>');
//Initialize a map instance.
map = new atlas.Map('myMap', {
center: [-99.47, 40.75],
zoom: 4,
trasnformRequest: function(url, resourceType){
if(url.startsWith('https://mytileserviceurl...') {
return {
url: url,
credentials: 'include',
headers: {
'my-header': true
}
};
}
}
});
//Wait until the map resources have fully loaded.
map.events.add('load', function (e) {
//Create a tile layer and add it to the map below the label layer.
//Weather radar tiles from Iowa Environmental Mesonet of Iowa State University.
map.layers.add(new atlas.layer.TileLayer({
tileUrl: 'https://mytileserviceurl/{z}/{x}/{y}.png',
opacity: 0.8,
tileSize: 256
}), 'labels');
});
}
</script>
</head>
<body onload="GetMap()">
<div id="myMap" style="position:relative;width:100%;min-width:350px;height:600px;"></div>
</body>
</html>
以下是一些相关资源:
以下是Azure Maps上的一些其他资源: