【发布时间】:2011-03-02 16:55:09
【问题描述】:
我一直在研究一种让用户无需拖动即可移动标记的方法。基本上,用户单击标记并打开信息窗口气泡。气泡中是指向在地图上设置点击事件的 javascript 函数的链接。当用户点击地图上的某处时,它应该将标记移动到点击的点。
在我的地图中,我有 18 个缩放级别。在缩放级别 15 下,此过程完美运行。如果我在单击一次后放大,标记仍会移动到我单击的位置。但是,如果我刷新并以缩放级别 16 重新开始并尝试单击某处,则标记将移动到更高且更左侧的位置。以更高的缩放级别重复此过程,标记会在地图上进一步向上和向左移动(距离)。
在低于 15 的缩放级别上执行上述操作也可以正常工作。
这是代码的sn-p:
lmLayer = new OpenLayers.Layer.Markers("Landmark Creation");
map.addLayer(lmLayer);
var marker = landmark['landmark_1234'];// this just pulls the marker out of storage
map.events.register("click", lmLayer, function(evt){
var pixel = new OpenLayers.Pixel(evt.clientX,evt.clientY);
marker.moveTo(pixel);
OpenLayers.Event.stop(evt);
});
我已经控制台注销了 clientX 和 clientY 点击,它们确实从浏览器的左边缘和上边缘注册了正确的 x/y 坐标。但似乎 OL 在缩放级别超过 15 时误算了 moveTo。
有什么想法吗?
【问题讨论】:
-
地图和标记层使用什么坐标系?它们是如何声明的?
标签: javascript openlayers marker