代码之家  ›  专栏  ›  技术社区  ›  Philipp Schmid

Microsoft.Maps.TileSource回调的凭据

  •  0
  • Philipp Schmid  · 技术社区  · 6 年前

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

    我在ASP.NET MVC应用程序中将uriConstructor设置为WebAPI端点。我宁愿 需要身份验证 但似乎没有一种方法可以通过回调请求发送托管网页的凭据。

    是否有方法指定TileSource web服务调用的凭据?

    1 回复  |  直到 5 年前
        1
  •  1
  •   rbrundritt    6 年前

    正确,Bing地图无法做到这一点。我建议改为看看Azure地图。这可以通过Azure地图实现,方法是设置地图的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地图上的一些附加资源: