OpenLayers event.register未注册

OpenLayers event.register未注册,openlayers,Openlayers,好的,我是OpenLayers的noob。我的问题是 在我的javascript中,在初始化地图、添加基本OSM层并居中后,我的代码对要添加到地图的标记点进行ajax查找,所有标记都在组中,因此它为每个组创建一个新层,并将标记添加到组层。但是,在将标记添加到层之前,它会使用一个简单的警报函数执行mousedown事件寄存器 这里的问题是,当我点击一个标记时,光标只是转向一只手,就像它认为我想拖动地图一样。就好像上面还有其他层阻止了点击。我尝试了控制台日志而不是警报,只是为了确保它不会真正触发事件

好的,我是OpenLayers的noob。我的问题是

在我的javascript中,在初始化地图、添加基本OSM层并居中后,我的代码对要添加到地图的标记点进行ajax查找,所有标记都在组中,因此它为每个组创建一个新层,并将标记添加到组层。但是,在将标记添加到层之前,它会使用一个简单的警报函数执行mousedown事件寄存器

这里的问题是,当我点击一个标记时,光标只是转向一只手,就像它认为我想拖动地图一样。就好像上面还有其他层阻止了点击。我尝试了控制台日志而不是警报,只是为了确保它不会真正触发事件单击。很难制作一个能够显示代码全貌的代码示例,但这里有一个片段:

function createMarker(lat, lon) {
    var icon = new OpenLayers.Icon('/mapicon/icon-b.png', new OpenLayers.Size(12, 20), new OpenLayers.Pixel(-6, -10)); // this is a custom image
    lonlat = new OpenLayers.LonLat(lon, lat);
    var marker = new OpenLayers.Marker(lonlat, icon.clone());
    return marker;
}

marker = createMarker(lat,lon,'Example Title');
marker.events.register('mousedown', pin, function(evt) { alert('help!'); OpenLayers.Event.stop(evt); });
我撞到墙上了,如果我不是秃头,我会把头发拔出来。有人有什么想法吗?

试试这个:

function createMarker(lat, lon) {
    var icon = new OpenLayers.Icon('/mapicon/icon-b.png', new OpenLayers.Size(12, 20), new OpenLayers.Pixel(-6, -10));
    lonlat = new OpenLayers.LonLat(lon, lat);
    var marker = new OpenLayers.Marker(lonlat, icon.clone());
    return marker;
}

marker = createMarker(lat,lon,'Example Title');
marker.events.register('mousedown', marker, function(evt) {
   alert('help!');
});
register函数的第二个参数应该是要绑定事件的对象。我脑海中一直有OpenLayers的鼠标悬停事件示例。映射对象:

map = new OpenLayers.Map('divmap');
map.events.register('mouseover', map, function(evt) {
   // Do stuff
});

我希望它能帮助你。祝你快乐

也许你应该研究层事件。我假设你正在使用一个向量层作为你的点?在这种情况下,请查看about事件处理

使用不同的层来接收鼠标事件应该是可行的

另外,请查看OL页面上的

对不起,如果我说的是显而易见的,而你已经尝试过了

编辑:


从你的回答中意识到,你可能想看一看,我问了,后来回答了一个老黑客。也许你可以从中吸取一些东西。

谢谢大家的帮助。问题是(OL文档非常可怜,所以它没有在任何地方说明这一点),它与创建层的顺序有关。在我的代码中,我循环遍历一个层名称数组,为每个层名称创建一个标记层和一个向量层。我试着先创建标记层,然后再创建向量层,它具有相同的点击削弱效果。所以我试着循环一次,首先创建所有的向量层。再次循环并创建标记层,这样做有效


OL是一个很好的映射系统。他们有这么差的文档,真是太遗憾了。这些样品几乎毫无用处。如果OL是一个社区驱动的东西,为什么没有OL论坛?我之所以来到这里,是因为这里似乎是OL用户发布任何帖子的唯一地方。

我也有同样的问题,我想我找到了解决办法:

看看这个:

问题似乎是您不能同时在不同层上侦听不同的事件,您只能在活动层中侦听

附言:我还没试过…

简单的制作方法:

map.events.listeners.mousedown.unshift({ 
    func: function(){
        alert('hola muheres');
    }
});
只需替换您想要的事件,而不是“mousedown”