Openlayers 3 矢量层的可选点具有偏移
我有一个带有GeoJSON源的向量层,由点和线串组成。当我点击一个点时,我想打开一个带有附加信息的弹出窗口 下面是一些代码:Openlayers 3 矢量层的可选点具有偏移,openlayers-3,Openlayers 3,我有一个带有GeoJSON源的向量层,由点和线串组成。当我点击一个点时,我想打开一个带有附加信息的弹出窗口 下面是一些代码: var style = { 'Point': [new ol.style.Style({ image: new ol.style.Circle({ fill: new ol.style.Fill({ color: 'rgb(255,0,0)' }), radius: 5, stroke: new
var style = {
'Point': [new ol.style.Style({
image: new ol.style.Circle({
fill: new ol.style.Fill({
color: 'rgb(255,0,0)'
}),
radius: 5,
stroke: new ol.style.Stroke({
color: '#000000',
width: 1
}),
})
})],
'LineString': [new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#ff0000',
width: 3
})
})],
'MultiLineString': [new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#0000ff',
width: 3
})
})]
};
var map = new ol.Map({
target: 'map-ol-canvas',
interactions: ol.interaction.defaults({mouseWheelZoom: false}),
layers: [new ol.layer.Tile({ source: new ol.source.OSM() })],
view: new ol.View({
zoom: 8,
maxZoom: 16
})
});
map.getView().fit(extent, map.getSize());
var trackSource = new ol.source.Vector({
url: '/test.geojson',
format: new ol.format.GeoJSON()
});
var track = new ol.layer.Vector({
source: trackSource,
style: function(feature, resolution) {
return style[feature.getGeometry().getType()];
}
});
map.addLayer(track);
var select = new ol.interaction.Select({
filter: function (feature, layer) {
return feature.getGeometry().getType() === 'Point';
}
});
map.addInteraction(select);
// When user clicks on a waypoint, show a tooltip.
function onMouseClick(browserEvent) {
var coordinate = browserEvent.coordinate;
var pixel = map.getPixelFromCoordinate(coordinate);
map.forEachFeatureAtPixel(pixel, function(feature) {
if (feature.getGeometry().getType() === 'Point') {
console.log(feature.get('date'));
}
});
}
map.on('click', onMouseClick);
问题:
当我直接点击一个点时,什么也没发生。当我单击下面的几个像素,再单击右或左一点(取决于缩放级别!)时,会选中该点并触发console.log
我可以通过使用Firebox WebDeveloper插件并激活“禁用所有样式”来修复此问题。
然而,当我一个接一个地手动删除所有CSS时,这种行为永远不会消失。
首先,我认为这可能是一些继承的填充或边距,但目前我认为画布不应该受到任何CSS的影响
对可能出现的问题有什么想法吗
亲切问候,,
哈吉斯我也遇到了同样的问题。它似乎链接到从特定模式导航到页面(我使用的是ajax哈希分页)。页脚不会加载,在我与地图上的第一个功能交互后,会发生以下情况:
当我从另一个页面链接时,问题似乎没有发生。我遇到了相同的问题。它似乎链接到从特定模式导航到页面(我使用的是ajax哈希分页)。页脚不会加载,在我与地图上的第一个功能交互后,会发生以下情况:
当我从另一个页面链接时,似乎没有出现此问题。我也有同样的问题。以下是一些建议,可能会对您有所帮助:
如果没有,您可以使用
map.setSize([width,height])
来调整地图的大小。我也有同样的问题。这里有一些建议可以帮助您:
如果没有,您可以使用
map.setSize([width,height])
来调整地图的大小。为什么需要ol.交互。使用过滤器选择?您已经在MouseClick上的内进行了检查。这只是为了查看偏移是否出现在两个交互上。是的;)是否尝试将snaptoPixel选项设置为false?我没有放弃这个选择。但遗憾的是,它并没有解决这个问题。无论如何谢谢你!为什么需要ol.交互。使用过滤器选择?您已经在MouseClick上的内进行了检查。这只是为了查看偏移是否出现在两个交互上。是的;)是否尝试将snaptoPixel选项设置为false?我没有放弃这个选择。但遗憾的是,它并没有解决这个问题。无论如何谢谢你!ps:map的大小表示openlayers贴图对象,而不是mapDiv的大小。ps:map的大小表示openlayers贴图对象,而不是mapDiv的大小。