3

マーカーをクリックしても OSM ポップアップが表示されない。マーカーでクリックイベントを試しました。それは機能しますか?マーカーをクリックしているときにマーカーにポップアップを表示する方法を教えてください。

JS私が試したコード

var newlonLat = new OpenLayers.LonLat( 78.447876 ,17.371610 )
.transform( new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
    map.getProjectionObject() // to Spherical Mercator Projection
    );
var zoom=9;
var newmarkers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(newmarkers);
newmarkers.addMarker(new OpenLayers.Marker(newlonLat));
map.setCenter (newlonLat, zoom);

newmarkers = new OpenLayers.Layer.Markers( "Markers" );

newmarkers.events.register('mouseover', newmarkers, function(evt) {
    popup = new OpenLayers.Popup("chicken",
    newlonLat,
    new OpenLayers.Size(200,50),
    "Location", 
    true);
    map.addPopup(popup);
});

newmarkers.events.register('mouseout', newmarkers, function(evt) {
    popup.hide();
});

map.addLayer(newmarkers);
newmarkers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(Tlon,Tlat).transform( fromProjection, toProjection),icon));
4

1 に答える 1

0

OpenLayers API で述べられているように、マーカー レイヤー自体には機能選択処理がありません。しかし、ベクターレイヤーはそうです。ただし、マーカー自体もマウス イベントを処理できます。

マーカーの代わりにレイヤーに「mouseover」イベントを登録しようとしたため、コードは機能しません。

そのため、イベント ハンドラーをマーカーに直接追加します。

myMarker.events.register('mousedown', myMarker, function(evt) { alert("this is Sparta! " + this.icon.url); OpenLayers.Event.stop(evt); });

または、この例に示すように、マーカーにベクター レイヤーを使用します。

または Layer.Text を使用します ( Layer.Text サンプル)

于 2014-01-28T12:54:39.940 に答える