我正试图通过鼠标点击 Map 获取坐标 .
坐标是正确的,直到我滚动 Map . 之后他们错了 - 他们从点击的位置移开 . 如果我更改了缩放级别,则下一个坐标是正确的,直到我再次滚动 Map .
首先我认为 getLayerPxFromViewPortPx
返回错误的值,因为如果我向左滚动并向上滚动并点击那里它会给我一个负 x
和 y
的像素 . 但我认为这是它的工作方式, x
和 y
是相对于图层中心 .
这是我有的:
map.events.register("click", map, function(e){
var opx = map.getLayerPxFromViewPortPx(e.xy) ;
var lonlat = map.getLonLatFromPixel(opx);
console.log(lonlat)
var marker = new OpenLayers.Marker(lonlat);
markers.addMarker(marker)
还有什么可能失败?
2 回答
我用
var lonlat = map.getLonLatFromViewPortPx(e.xy)
更改了getLonLatFromPixel()
,现在看起来很有效 . 但是我仍然很好奇为什么之前的失败 .在init函数中()
init函数输出
});