use*_*875 19 mouseover openlayers infowindow marker
这听起来很简单,但我找不到任何新手教程:有人能给我一个简单的例子我如何在OpenLayers中创建(vektor)标记,在mouseover上打开infowindow甚至在mouseout上关闭它?
我发现了部分解释但不是全部......
Kyl*_*yle 17
有关如何执行此操作的简单示例,您需要执行以下操作:
创建一个矢量图层以包含您的标记并将其添加到地图中:
this.markerLayer = new OpenLayers.Layer.Vector(
"My Marker Layer",
{ /* configuration options are set here */ }
);
map.addLayer(this.markerLayer);
Run Code Online (Sandbox Code Playgroud)
创建标记并将其添加到地图中:
var marker = new OpenLayers.Feature.Vector(point, attributes, markerStyle);
this.markerLayer.addFeatures([marker]);
Run Code Online (Sandbox Code Playgroud)
为您的图层创建一个选择控件,并在用户将鼠标悬停在您的标记上时注册一个函数来构建弹出窗口:
var selectControl = new OpenLayers.Control.SelectFeature(this.markerLayer, {
hover: true
});
selectControl.events.register('featurehighlighted', null, onFeatureHighlighted);
Run Code Online (Sandbox Code Playgroud)
构建弹出窗口:
onFeatureHighlighted: function (evt) {
// Needed only for interaction, not for the display.
var onPopupClose = function (evt) {
// 'this' is the popup.
var feature = this.feature;
if (feature.layer) {
selectControl.unselect(feature);
}
this.destroy();
}
feature = evt.feature;
popup = new OpenLayers.Popup.FramedCloud("featurePopup",
feature.geometry.getBounds().getCenterLonLat(),
new OpenLayers.Size(100,100),
"<h2>"+feature.attributes.station_na + "</h2>" +
"Location: " + feature.attributes.location + '<br/>' +
"Elevation: " + feature.attributes.elev_,
null, true, onPopupClose);
feature.popup = popup;
popup.feature = feature;
map.addPopup(popup, true);
}, // ...
Run Code Online (Sandbox Code Playgroud)
您可以使用标记和弹出窗口
例如:
var popup;
var marker_layer = new OpenLayers.Layer.Markers( "Markers" );
var size = new OpenLayers.Size(32,32);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon_marker = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png',
size,
offset);
marker = new OpenLayers.Marker(new OpenLayers.LonLat(5.6, 50.6), icon_marker);
//here add mouseover event
marker.events.register('mouseover', marker, function(evt) {
popup = new OpenLayers.Popup.FramedCloud("Popup",
new OpenLayers.LonLat(5.6, 50.6),
null,
'<div>Hello World! Put your html here</div>',
null,
false);
map.addPopup(popup);
}
//here add mouseout event
marker.events.register('mouseout', marker, function(evt) {popup.hide();});
marker_layer.addMarker(marker);
map.addLayer(marker_layer);
Run Code Online (Sandbox Code Playgroud)
roc*_*ast -1
听起来你想看看“OpenLayers.Popup()”
此示例在您绘制多边形然后单击它后显示一个弹出窗口,但您应该能够更改它以响应悬停。 http://openlayers.org/dev/examples/select-feature-openpopup.html
| 归档时间: |
|
| 查看次数: |
35609 次 |
| 最近记录: |