Javascript 更新/调整openlayers中弹出框云的大小

Javascript 更新/调整openlayers中弹出框云的大小,javascript,dictionary,openlayers,Javascript,Dictionary,Openlayers,我已经处理这个问题将近三天了,所以我想我失败的研究和我提出的概念的反复试验就足够了。以下是场景: 我使用开放图层贴图。我生成标记。在使用这些标记悬停时,我需要使用弹出框对话框显示标签“查看详细信息”。单击“查看详细信息”后,我需要加载jpg文件,它是与我的地图中的标记相对应的特定位置的俯视屏幕快照。我可以成功地做到这一点,我点击“查看详细信息”,我可以显示图像。但最大的问题是,我的弹出框云的四个边缘分散在周围,其内容是透明的,图像漂浮在中间。 我为视图详细信息标签附加了一个内联“onclick属

我已经处理这个问题将近三天了,所以我想我失败的研究和我提出的概念的反复试验就足够了。以下是场景:

我使用开放图层贴图。我生成标记。在使用这些标记悬停时,我需要使用弹出框对话框显示标签“查看详细信息”。单击“查看详细信息”后,我需要加载jpg文件,它是与我的地图中的标记相对应的特定位置的俯视屏幕快照。我可以成功地做到这一点,我点击“查看详细信息”,我可以显示图像。但最大的问题是,我的弹出框云的四个边缘分散在周围,其内容是透明的,图像漂浮在中间。

我为视图详细信息标签附加了一个内联“onclick属性”:

fromImage = '<img src="'+data['map_locations'][key]['image_url']+'" class="ImageFrom"></img><label type="button" class="location_image_container" onclick="show_location_details()">VIEW DETAILS</label>';
你知道如何让弹出框云按照我想要的方式运行吗

谢谢你们的意见

[编辑] 你好为了清楚起见,我在脚本中声明了一个全局“AutoSizeFramedCloud”

AutoSizeFramedCloud = OpenLayers.Class(OpenLayers.Popup.FramedCloud,{'autosize':true});
在函数内部,我设置了它的初始构造函数:

function addMarkers(lonlat, marker_name, description, id, label, subgroup, category){
        var ll,popupClass,popupContentHTML,marker,popupContentDiv;
        ll = lonlat;
        popupClass = AutoSizeFramedCloud;
        popupContentHTML = description+label;
        marker = marker_name;
        popupContentDiv = id;
        popupGroupDiv = subgroup;
}
当我点击弹出窗口中的“查看详细信息”标签时:

<label type="button" class="location_image_container" onclick="show_location_details()">VIEW DETAILS</label>
但是,它给了我一个错误:

Uncaught TypeError: Cannot call method 'setSize' of undefined 
[编辑]

下面是我如何创建弹出窗口的功能

function addMarker(ll, popupClass, popupContentHTML, closeBox, overflow, marker_name, popupContentDiv, popupGroupDiv, category){
        var feature = new OpenLayers.Feature(marker_name, ll);
        feature.closeBox = closeBox;
        feature.popupClass = popupClass;
        feature.data.popupContentHTML = popupContentHTML;
        //feature.data.overflow = (overflow) ? "auto":"hidden";
        feature.data.icon = new OpenLayers.Icon("./img/icon/blank.png", size);
        feature.data.contentDiv = popupContentDiv;
        feature.data.groupDiv = popupGroupDiv;

...
}

弹出窗口由许多不同的DIV组成,不要试图直接改变它们的大小,而是使用适当的弹出方法:setSize(contentSize),它以大小为参数;或updateSize(),它会自动调整弹出窗口的大小以适应其内容:


我做了,但没有成功。我相信我做错了什么。我更新了我的问题。未捕获类型错误:无法调用未定义的方法“setSize”-这意味着,this.popup不是popup对象。我无法从你的代码中找到,你在哪里创建弹出对象。但是你是如何创建弹出对象的?是否有类似于
var myPopup=new OpenLayers.Popup.FramedCloud(…
这里,我是这样做的…AutoSizeFramedCloud=OpenLayers.Class(OpenLayers.Popup.FramedCloud,{'autosize':true});在
sites\mysite\modules\contrib\openlayers\plugins\behavioropenlayers\u behavior\u popup.js
中,您可以看到
新的openlayers.popup.FramedCloud行
。非常感谢。这是我所期望的。
Uncaught TypeError: Cannot call method 'setSize' of undefined 
function addMarker(ll, popupClass, popupContentHTML, closeBox, overflow, marker_name, popupContentDiv, popupGroupDiv, category){
        var feature = new OpenLayers.Feature(marker_name, ll);
        feature.closeBox = closeBox;
        feature.popupClass = popupClass;
        feature.data.popupContentHTML = popupContentHTML;
        //feature.data.overflow = (overflow) ? "auto":"hidden";
        feature.data.icon = new OpenLayers.Icon("./img/icon/blank.png", size);
        feature.data.contentDiv = popupContentDiv;
        feature.data.groupDiv = popupGroupDiv;

...
}
var myPopup = new OpenLayers.Popup.FramedCloud({
...    


myPopup.setSize(new OpenLayers.Size(500, 400));
// Or...
// myPopup.updateSize();