在OpenLayers中添加可单击的功能
我想将特征添加到向量层,然后单击该特征以显示有关该特征的信息。有人能帮我介绍一下吗。您可以显示一个弹出窗口来显示信息 将包含功能信息的属性设置为“name”,如下所示:在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
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函数中销毁地图上的所有活动弹出窗口。