0

我正在尝试将自定义Microsoft.Maps.TileSource()添加到我的地图中。

我在 ASP.NET MVC 应用程序中将 uriConstructor 设置为 WebAPI 端点。我更愿意要求对 WebAPI 端点进行身份验证,但似乎没有办法通过回调请求发送托管网页的凭据。

有没有办法为 TileSource Web 服务调用指定凭据?

4

1 回答 1

1

正确,使用 Bing 地图无法做到这一点。我建议改为查看 Azure Maps。这可以通过 Azure Maps 实现,方法是设置地图的 transformRequest 选项,然后创建切片图层并将其添加到地图中。这是一个快速的代码示例:

<!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 上的一些其他资源:

于 2018-12-11T21:04:04.487 回答