javascript - 如何在 ImageMapType Javascript 的 getTileUrl 中添加授权 header

标签 javascript jquery google-maps http-headers

在为 Google map API 创建 TileOverlay 时,我想访问托管在不同主机上的一些自定义 map 图 block ,这些主机需要用户/通行证。

这是我当前的 JavaScript 代码:

var carte = new google.maps.ImageMapType({
    getTileUrl: function (tileCoord, zoom) {
        var url = "http://host.com/" + (zoom + 1) + "/" + (tileCoord.x + 1) + ":" + (tileCoord.y + 1) + "/tile.png";
        return url;
    }, 
    tileSize: new google.maps.Size(256, 256), 
    minZoom: 8, 
    opacity: 0.6
});
map.overlayMapTypes.push(carte);

由于连接返回 401 Anauthorized,我无法访问图 block 。如何在 Javascript/Jquery 中传递 Authorization header ,让 url 知道我有权访问这些图 block ?

我正在寻找这样的解决方案,但是在 Javascript 中: Adding an Authorization header in getTileUrl for Maps Tile Android

最佳答案

我通过实现代理找到了解决方案。 这是实现的代码:

var carte = new google.maps.ImageMapType({
        getTileUrl: function (tileCoord, zoom) {
            return 'http://myhost/myController/getTile?url=http://externe_url/' + (zoom + 1) + "/" + (tileCoord.x + 1) + ":" + (tileCoord.y + 1) + "/tile.png";
        }, 
        tileSize: new google.maps.Size(256, 256),  
        minZoom: 8,  
        opacity: 0.6
    });

我的 Controller 代码:

def getTile() {
def result
try {
    def http = new HTTPBuilder()
    try {
        http.setHeaders([Authorization: 'Basic ' + 'user:pass'.bytes.encodeBase64().toString()])
        http.request(params.url, Method.GET, ContentType.BINARY) { req ->
            response.success = { resp, retour ->
                result = retour.bytes
            }
        }
    } catch (IOException | URISyntaxException e) { }
}

if(result) {
    // on renvoie au navigateur le contenu de l'image
    response.status = HttpServletResponse.SC_OK
    response.contentType = 'image/x-png'
    response.outputStream << result
    response.outputStream.flush()
}
else {
    response.status = HttpServletResponse.SC_NO_CONTENT
}
}

关于javascript - 如何在 ImageMapType Javascript 的 getTileUrl 中添加授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38722919/

相关文章:

javascript - Md-tabs AngularJS 只工作一次

javascript - 如何使用 JavaScript 将页面的特定部分保存为图像

reactjs - React jest testing Google Maps Api,Uncaught TypeError : this. autocomplete.addListener 不是函数

javascript - 静音数据uri?

javascript - 第一个视频结束后更改视频源

javascript - 如何在 Node 4 中正确导出 ES6 类?

javascript - 宽度为 0 的输入

jquery - Google map 信息窗口按钮单击 jquery 不起作用

javascript - Google map API 中心和缩放多个标记

javascript - 如何在行中没有任何按钮的情况下在 Angular Js 中使用内联编辑