forEachFeatureatPixel関数を使用すると、FirefoxとIEはOPENLAYERS 3で非常に遅く動作しています。私はそれをスピードアップする方法を見つけようとしています。本質的には、アプリケーション(www.penguinmap.comにあります)は、ユーザーがマップ上のあるポイントを飛び越したときに表示されるポップアップとして表示されます。しかし、Firefoxはこの機能に苦しんでいます。私はそれをスピードアップするために、次のコードで助けを探しています:私は(私はIE 11にも、パフォーマンスの低下の問題を抱えていた)独自の機能とポイントのために、この問題を解決しforEachFeatureatPixelでFirefoxが非常に遅い
var selectMouseMove = new ol.interaction.Select({
condition: function (e) {
return e.originalEvent.type == 'mousemove';
},
style: hoverStyle
})
// Change cursor
var target = map.getTarget();
var jTarget = typeof target === "string" ? $("#" + target) : $(target);
// On Hover, change the mouse cursor and display the name of the site
$(map.getViewport()).on('mousemove', function (e) {
var pixel = map.getEventPixel(e.originalEvent);
var feature = map.forEachFeatureAtPixel(pixel,
function (feature, layer) {
return feature;
});
if (feature) {
map.addInteraction(selectMouseMove)
jTarget.css("cursor", "pointer");
var geometry = feature.getGeometry();
var coord = geometry.getCoordinates();
popup.setPosition(coord);
$(element).popover({
'placement': 'top',
'html': true,
'content': feature.get('site_name')
});
$(element).popover('show');
} else {
map.removeInteraction(selectMouseMove)
jTarget.css("cursor", "");
$(element).popover('destroy');
}
});
var element = document.getElementById('popup');
var popup = new ol.Overlay({
element: element,
positioning: 'bottom-center',
stopEvent: false
});
map.addOverlay(popup);