我们是一个JavaFx应用程序,它利用WebView的浏览器功能来呈现网页。我们能够执行从JavaScript到JavaFX的upcalls,反之亦然。 WebConsoleListener被添加到日志消息或从wepage抛出的错误。
为了在JavaFX应用程序中显示几个Map功能,如坐标选择,距离计算等,我们创建了一个网页,并使用OpenLayer v4.2.0 API编写了所需的必需javascript。一切都在浏览器中工作(当然,在删除向JavaFx的上调后)以及在JavaFx应用程序中。
但是,当应用程序部署到客户时,其日志记录错误“跨源资源共享策略拒绝跨域映像加载”和地图图块未加载。客户位于不同的地理位置(日本),我们无法访问他们的机器。
他们是'ol.source.OSM'的'crossOrigin'属性,正如文档中提到的,它的价值仍然是'匿名的'。当我们将其值设置为“use-credentials”时,我们能够重现类似的问题。
以下是与地图渲染相关的代码。如果需要,我们可以发布与添加几何和各种事件处理相关的整个代码 (取决于用户操作叠加层已删除或添加)。
<link rel="stylesheet" href="ol.css" type="text/css">
<script src="polyfill.js"></script>
<script src="ol.js"></script>
var raster = new ol.layer.Tile({
source: new ol.source.OSM(
)
});
var coordinateOverlay = new ol.layer.Vector({
source: new ol.source.Vector({
}),
style: new ol.style.Style({
image: new ol.style.Circle({
radius: 7,
fill: new ol.style.Fill({
color: '#d12b19'
})
})
})
});
var map = new ol.Map({
layers: [raster, coordinateOverlay],
target: 'map',
view: new ol.View({
center: [-11000000, 4600000],
zoom: 5
})
});
var features = new ol.Collection();
var distanceOverlay = new ol.layer.Vector({
source: new ol.source.Vector({ features: features }),
style: new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(255,255,255,0.3)'
}),
stroke: new ol.style.Stroke({
color: '#d12b19',
width: 4
}),
image: new ol.style.Circle({
radius: 7,
fill: new ol.style.Fill({
color: 'red'
})
})
})
});
如果有人知道此问题的原因,请提供帮助。
EDIT 客户端落后于代理。 [恕我直言,这里看起来无关紧要,因为已经提出了请求。]