我已将Google Earth Engine中的地图导出到具有公共访问权限(allUsers)的云存储桶中。存储桶中的格式是带有.png扩展名的地图图块。
我还使用gsutil设置了我的CORS设置,如下所示:
[
{
"origin": ["*"],
"responseHeader": ["Authorization", "Content-Range", "Accept", "Content-Type", "Origin", "Range"],
"method": ["GET"],
"maxAgeSeconds": 300
}
]
但是尝试访问这些地图图块(使用Leaflet tileLayer)时,我在Chrome开发人员工具中收到了CORB(跨原点读取阻止)错误,但未显示任何内容。
我在Chrome DT中的响应标头显示以下内容:
cache-control: no-cache, no-store, max-age=0, must-revalidate
content-type: text/html; charset=utf-8
expires: Mon, 01 Jan 1990 00:00:00 GMT
如何解决此问题?
答案 0 :(得分:2)
如果您想使所有存储桶都公开可见,则需要提供IAM policies,只需运行:
gsutil iam ch allUsers:objectViewer gs://youBucketName
更新: 您必须使用的要点是:
"https://storage.googleapis.com/bucketName/ObjectName"
所有对storage.cloud.google.com URI的请求都需要身份验证。即使allUsers有权访问对象,这也适用。如果希望用户下载未经身份验证的匿名对象而不进行身份验证,请使用Direct API请求中记录的storage.googleapis.com URI。有关详细信息和示例,请参阅访问公共数据。
您直接使用https://console.cloud.google.com/storage
,这就是为什么您会遇到此错误的原因
示例:
您有: https://console.cloud.google.com/storage/browser/logs1tiles/centralKansas/8/58/99
应为: https://storage.googleapis.com/logs1tiles/centralKansas/8/58/99
答案 1 :(得分:0)
最后弄明白了。在Leaflet中,tileLayer的格式应为tms = false,扩展名为.png。
With inv_twcg_ws
For Each cell In .Range("G2:G" & .Cells(Rows.Count, "A").End(xlUp).Row)
cell.Value = Application.WorksheetFunction.IfError(Application.VLookup(CStr(cell.Value), report_rng, 1, True), "No")
Next cell
End With