gpt4 book ai didi

javascript - openlayers弹出错误位置

转载 作者:行者123 更新时间:2023-11-28 01:51:20 25 4
gpt4 key购买 nike

我有一个使用 OpenLayers 2.13.1 的应用程序。它正在使用 bing basemap 和叠加 WMS 图层。我正在使用 FramedCloud 弹出窗口。我会就像弹出窗口出现在用户点击的地方,有时确实如此。有时它会随机出现在用户单击位置的东边或西边。以下是显示我如何设置的代码片段:

                boxSize = new OpenLayers.Size(450, 120);
if (innovate.popupbox[mapID]) {

innovate.popupbox[mapID].lonlat = map.getLonLatFromPixel(event.xy);
innovate.popupbox[mapID].setContentHTML(content);
innovate.popupbox[mapID].setSize(boxSize);
//innovate.popupbox[mapID].panIntoView();
//innovate.popupbox[mapID].updatePosition();
innovate.popupbox[mapID].show();
} else {
//first popup load - we will create a popup object
//and for next time we will reuse this object rather than creating a new one
innovate.popupbox[mapID] = new OpenLayers.Popup.FramedCloud(
"innovate_info_popup_" + mapID,
map.getLonLatFromPixel(event.xy),
boxSize,
content,
null,
true
);

innovate.popupbox[mapID].panMapIfOutOfView = true;
innovate.popupbox[mapID].hide = function() {
this.div.style.display = 'none';
map.panTo(innovate.lastPopupCenter[mapID]);
}
map.addPopup(innovate.popupbox[mapID]);
}

最佳答案

您应该使用 map.getLonLatFromViewPortPx(event.xy) 来获取 LonLat 对象,而不是 map.getLonLatFromPixel(event.xy)

没有那么丰富(如想要的那样;)getLonLatFromViewPortPx 的解释相应的方法可以从documentation获取.

关于javascript - openlayers弹出错误位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664654/

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