Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenLayers中添加可单击的功能_Openlayers - Fatal编程技术网

在OpenLayers中添加可单击的功能

在OpenLayers中添加可单击的功能,openlayers,Openlayers,我想将特征添加到向量层,然后单击该特征以显示有关该特征的信息。有人能帮我介绍一下吗。您可以显示一个弹出窗口来显示信息 将包含功能信息的属性设置为“name”,如下所示: var feature = new OpenLayers.Feature.Vector( new OpenLayers.Geometry.Point(specify your points here), {some:'data'}, {externalGraphic: 'image for your feature', gra

我想将特征添加到向量层,然后单击该特征以显示有关该特征的信息。有人能帮我介绍一下吗。

您可以显示一个弹出窗口来显示信息

将包含功能信息的属性设置为“name”,如下所示:

var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(specify your points here),
{some:'data'},
{externalGraphic: 'image for your feature', 
graphicHeight: 21, graphicWidth: 16});
feature.attributes = {
name:"My feature info"};
创建特征后,将其添加到矢量层并按如下所示设置控件

Control = new OpenLayers.Control.SelectFeature(myvectorLayer,
{
onSelect: onFeatureSelect,
onUnselect: onFeatureUnselect 
});
现在定义onFeatureSelect函数

function onFeatureSelect(feature) 
{
var popup = new OpenLayers.Popup.FramedCloud("MyPopUp",
feature.geometry.getBounds().getCenterLonLat(),
null,feature.attributes.name, null, true, onPopupClose);
popup.panMapIfOutOfView = true;
popup.autoSize = true;
feature.popup = popup;
map.addPopup(popup);
}

代码“feature.attributes.name”将显示您的特性的“name”属性中的任何内容作为弹出窗口的主体。您甚至可以使用包含img标记等的html标记组合在功能中定义您的名称属性。

非常感谢。它起作用了。我创建了两个功能,单击后在地图上显示弹出窗口,但问题是当我单击第一个功能时,弹出窗口出现,当我继续单击第二个功能时,第一个弹出窗口保留在地图上,两个弹出窗口都显示出来。我想在显示其他弹出窗口之前删除活动弹出窗口,这是因为在创建新的弹出窗口之前,您没有销毁活动弹出窗口。在创建新的弹出窗口时或在onFeatureUnselect函数中销毁地图上的所有活动弹出窗口。