openlayers弹出错误的位置

时间:2013-10-29 17:01:49

标签: javascript popup openlayers

我有一个使用OpenLayers 2.13.1的应用程序。它正在利用一个bing 底图和覆盖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]);
                }

1 个答案:

答案 0 :(得分:1)

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

不是那么丰富(想要;)getLonLatFromViewPortPx的解释和相应的方法可以从documentation获得。