我正在尝试使用CSP version获得要渲染的地图。
从JSFiddle和下面的代码中可以看到,除了渲染tiles之外,一切似乎都在正常工作。
控制台中不会抛出错误。
<div id='map'></div>mapboxgl.accessToken = 'ACCESS_TOKEN';
mapboxgl.workerUrl = 'https://api.mapbox.com/mapbox-gl-js/v1.6.1/mapbox-gl-csp-worker.js';
var el = document.createElement('div');
el.style.backgroundImage = 'url(https://placekitten.com/g/40/40/)';
el.style.width = 40 + 'px';
el.style.height = 40 + 'px';
var map = window.map = new mapboxgl.Map({
container: 'map',
zoom: 12.5,
center: [-74.5, 40],
style: 'mapbox://styles/mapbox/streets-v11',
hash: true
});
new mapboxgl.Marker(el)
.setLngLat([ -74.5, 40 ])
.addTo(map);#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}发布于 2020-01-25 07:09:27
我在Mapbox工作-我相信这是因为Salesforce不允许加载worker脚本。每个Salesforce:
CSP你不能从第三方站点加载JavaScript资源,即使它是一个可信的站点。若要使用来自第三方站点的JavaScript库,请将其添加到静态资源,然后将该静态资源添加到您的组件。从静态资源中加载库之后,您可以正常使用它。
Static Resource是一个存档文件,其中包含您要在Salesforce中访问的文件。所以简而言之,Salesforce的安全策略将只加载mapbox-gl-csp-worker.js的本地副本。您需要使用该文件创建一个静态资源,以使地图正常工作:
有几件事需要牢记:
确保将脚本标记指向GL JS的CSP内部版本:<script src='https://api.mapbox.com/mapbox-gl-js/v1.6.1/mapbox-gl-csp.js'></script>
祝好运!
布兰迪
https://stackoverflow.com/questions/59755074
复制相似问题