ホバーとクリックポップアップの両方を機能させる方法は?


8

私はこのすべてにかなり新しいです。

ホバー/マウスオーバーし、geojsonレイヤーでポップアップ作業をクリックしたい。これまでのコードは次のとおりですが、クリックポップアップをめちゃくちゃにせずにホバーを含める場所がわかりません。ホバーがテキストフィールドのコンテンツを表示し、円マーカーを強調表示する必要があります。

$.getJSON('http://soundgoods.cartodb.com/api/v2/sql?format=GeoJSON&q=SELECT * FROM soundgoods_mixtape_map_1', function(data) {
var geojsonMarkerOptions = {
    radius: 8,
    fillColor: "#FFCC00",
    color: "#323232",
    weight: 2,
    opacity: 0.5,
    fillOpacity: 0.4
    };

var geojson = L.geoJson(data, {

    pointToLayer: function (feature, latlng) {
        var popupOptions = {maxWidth: 500};
        var popupContent = '<a target="_blank" class="popup" href="' +
                feature.properties.post + '">' +
                feature.properties.soundcloud +
                '<h3>' + "Post & tracklist" + '</h3>' + '</a>';
        return L.circleMarker(latlng, geojsonMarkerOptions).bindPopup(popupContent,popupOptions,{

        });

    }

});
markers.addLayer(geojson);

// CONSTRUCT THE MAP
var map = L.map('map').setView([0,0],3);
baseLayer.addTo(map);
markers.addTo(map);

マウスオーバーで何が起こりたいのか説明してもらえますか?
ghybs 2016年

質問を編集しました。フォーマットしてくれてありがとう。
Wolfram

回答:


4

@ghybsが言ったpointToLayerように、次のように内部のサークルマーカー自体にイベントをアタッチします。

pointToLayer: function (feature, latlng) {
    var popupOptions = {maxWidth: 500};
    var popupContent = '<a target="_blank" class="popup" href="' +
            feature.properties.post + '">' +
            feature.properties.soundcloud +
            '<h3>' + "Post & tracklist" + '</h3>' + '</a>';
    var circle = L.circleMarker(latlng, geojsonMarkerOptions).bindPopup(popupContent,popupOptions);

    // Highlight the marker on hover
    circle.on('mouseover', function(){
        circle.setStyle({ color: 'red' });
    });

    // Un-highlight the marker on hover out
    circle.on('mouseout', function(){
        circle.setStyle(geojsonMarkerOptions);
    });

    // Open the popup on click. Actually optional, as popup automatically adds a click listener.
    circle.bindPopup(popupContent, popupOptions);
    circle.on('click', function(){
        circle.openPopup(latlng);
    });

    return circle;
}

こんにちはイヴァン、返信に感謝しますが、コードを追加しても何も変化せず、マウスオーバーで強調表示されません...
Wolfram

1
Ivanのコードは、軽微なコードの誤りを修正すると機能するはずです。Opの初期バージョン:jsfiddle.net/ve2huzxw/202 Ivanのコード:jsfiddle.net/ve2huzxw/203
ghybs

OK、クール、ハイライトは機能しますが、ホバーポップアップは機能しません...以下の解決策を確認します。これまでに感謝します!
Wolfram

0

マウスがベクター形状(GeoJSON機能)の上にあるときにテキストを表示する場合、Leaflet.labelプラグインdemo)に興味があります

Leaflet.labelは、リーフレットを使用したマップ上のマーカーと形状にラベルを追加するためのプラグインです。

強調表示/円マーカーのスタイルを変更し、あなたが使用する必要がある"mouseover""mouseout"そのリーフレットのチュートリアルに示すように、あなたにGeoJSON層群の各機能のイベント、:インタラクティブChoropleth地図、セクション「追加の相互作用」

状態をマウスでホバーすると、何らかの方法で視覚的に強調表示されます。

これはすべて、クリックで開くポップアップと一緒に問題なく実行できます。


ありがとう!ええと、プラグインなどをインストールする方法を確認する必要があります...コーディングが簡単でも他の障害があります;-)
Wolfram
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.