gpt4 book ai didi

javascript - OpenLayers 弹出窗口不响应事件

转载 作者:行者123 更新时间:2023-11-29 10:24:12 25 4
gpt4 key购买 nike

我有一个带有标记的 OpenLayers map 和一个当我点击标记时应该出现的弹出窗口。这在 IE8 中工作正常,但在 Firefox 3.6 中不工作。任何想法为什么?据我所知,mousedown 事件没有被触发,因为我的日志消息没有出现。 map 在http://ndinfo.heroku.com/test.html我用来创建标记和弹出窗口的代码是:

function addMarker() {
var map = g_waze_map.map;

var markers1 = new OpenLayers.Layer.Markers( "Markers1" );
g_waze_map.map.addLayer(markers1);
var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',size,offset);
var marker = new OpenLayers.Marker(new OpenLayers.LonLat(34.7934759272249, 32.0835554760902),icon);

markers1.addMarker(marker);
marker.events.register('mousedown', marker, function(evt) {
console.log('hi');
var popup = new OpenLayers.Popup.FramedCloud(null,
marker.lonlat,
null,
"<div style='background-color:red; width:150;height:100'>hi</div>",

null,true,null);

map.addPopup(popup);

OpenLayers.Event.stop(evt);

});
}

最佳答案

来自 here 的回答.关键是覆盖 OpenLayers.Control.ModifyFeature 中的 activate() 函数。我没有意识到在创建标记之前拥有控件会以任何方式影响标记,但事实证明确实如此。

var shapes = new OpenLayers.Layer.Vector( "Shapes" );
map.addLayer(shapes);
var modifyControl = new OpenLayers.Control.ModifyFeature(shapes, {
activate: function() {
var activated = false;
if(OpenLayers.Handler.prototype.activate.apply(this, arguments)) {

this.map.events.on({
"removelayer": this.handleMapEvents,
"changelayer": this.handleMapEvents,
scope: this
});
activated = true;
}
return activated;
}
});

关于javascript - OpenLayers 弹出窗口不响应事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5244857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com