Leafletマップでクリックイベントをトリガーしますか?


14

リーフレットマップ上の特定の緯度/経度でクリックイベントを発生させることは可能ですか?

特定の場所のポイントに関連付けられたポップアップを表示したいと思います。

私は、いくつかの組み合わせを試してみましたmap.fireEvent('click', latLon)し、map.fire('click', latLon)私はこのアプローチを記述する例や参照を見つけることができません。これはできることですか?

私が試した(そして機能する)1つのアプローチは、リーフレットレイヤーでオブジェクトを識別し、を使用してクリックイベントをトリガーすることlayer[id].fireEvent('click')です。ただし、これにはオブジェクトIDが必要であり、lat / lonを使用してこのクリックをトリガーできるようにしたいと考えています。


クリックした場所でポップアップを開きたいのですが、この場所にマーカーを追加したり、新しいポップアップを追加したりしたくありません。私がやろうとしているのは、ポイントが既に存在する特定の緯度/経度でクリックイベントを発生させ、既に存在するポップアップをトリガーすることです。

回答:


21

あなたはそれがあなたが思っているよりも複雑だと思っていると思います!

これを試して:

var popLocation= new L.LatLng(-42.8585,147.2468);
var popup = L.popup()
    .setLatLng(popLocation)
    .setContent('<p>Hello world!<br />This is a nice popup.</p>')
    .openOn(map);

優れたドキュメントから入手

私はあなたが今何をしたいのか知っています。クリックした任意の場所でポップアップを開く方法は次のとおりです。

map.on('click', function(e) {        
        var popLocation= e.latlng;
        var popup = L.popup()
        .setLatLng(popLocation)
        .setContent('<p>Hello world!<br />This is a nice popup.</p>')
        .openOn(map);        
    });

最終編集:「クリック」イベントを発生させて、デザインを確認する必要がある何かを達成したい場合、私は真剣に考えています。本当にやりたいのなら、javascriptで可能だと思わます。ただし、GISの質問ではありません。


ご提案ありがとうございます。ポップアップを作成せずにこれをトリガーできるかどうか知っていますか?私の場合、マップに70ポイントを追加し(ポップアップをバインド)、これらのポップアップの1つを後でトリガーしたいです。
djq 14

すべてのポップアップを作成し、それらを何らかの方法で/場所に保存してから、マップ上で開くことができます。ドキュメントを読んで試してください。あなたが何をしようとしているのか分かりません。おそらく、質問を編集してエンドポイントを定義する必要がありますか?
アレックスリース14

ポップアップが配列に格納されている場合、ポップアップを開く方法を理解しています。マップ上の場所をクリックして、ポップアップを開いてみてください。質問でこれを明確にしようとします。
djq 14

あなたはクリックに最も近いポップアップを開きたいですか?または、クリックした場所でポップアップを開きますか?マーカーは必要ないのですか?
アレックスリース14

クリックした場所でポップアップを開きたいのですが、マーカーは必要ありません。
djq 14

1

リーフレットマップの他の回答を使用して、ユーザーがマップ内でクリックされた場所に基づいて機能リクエストを送信できるようにします。これにより、その位置から長い緯度を持つ事前入力済みのGoogleフォームが開きます。これらのポイントは、sheetsee / tabletopを使用してマップ上に表示されます。map.hasLayer(my requests layer)を追加したので、マップがクリックされたときにユーザーにポップアップが常に表示されるとは限りません。

    map.on('click', function(e) { 
    if (map.hasLayer(requests)) {
        var requestform = e.latlng;
        var formpopup = L.popup();
        .setLatLng(requestform)
        .setContent('<a href=" google form ' + e.latlng.lat + 
                    '" target="_blank">Form</a>') 
        .openOn(map);
    }
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.