好的,我是OpenLayers的菜鸟.我遇到的问题是......
在我的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); });
Run Code Online (Sandbox Code Playgroud)
我正在撞墙,如果我不是秃头,我会把头发拉出来.有人有主意吗?
And*_*sen 10
谢谢大家的帮助.问题是(并且OL文档非常可悲,因此它没有在任何地方说明这一点)它与创建图层的顺序有关.在我的代码中,我遍历一个图层名称数组,我正在为每个名称创建一个标记图层和一个矢量图层.我尝试先创建标记图层,然后再创建矢量图层,它具有相同的点击瘫痪效果.所以我尝试循环一次以创建所有矢量图层.循环再次创建标记图层并且工作正常.
OL是一个很棒的地图系统.他们的文档很差,真是太遗憾了.样品几乎没用.如果OL是这样一个社区驱动的东西,为什么没有OL论坛?我不得不来这里,因为它似乎是唯一一个OL用户做任何发布的地方.
尝试这个:
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!');
});
Run Code Online (Sandbox Code Playgroud)
注册函数的第二个参数应该是要绑定事件的对象。我一直记得 OpenLayers.Map 对象的鼠标悬停事件的示例:
map = new OpenLayers.Map('divmap');
map.events.register('mouseover', map, function(evt) {
// Do stuff
});
Run Code Online (Sandbox Code Playgroud)
我希望它对你有帮助。快乐编码!
| 归档时间: |
|
| 查看次数: |
17774 次 |
| 最近记录: |