openlayers简单鼠标悬停在标记上

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)


bsu*_*tor 9

您可以使用标记和弹出窗口

例如:

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