leaflet.js +クラスタリングを使用してOpenPopup()を使用してください
-
10-12-2019 - |
質問
今すぐhareのためにFantastic OpenStreetMap Mapping LibleLFlet.jsを使用しています。>このクラスタリングプラグイン。現在のプロジェクトでうまく機能しています。これは、さまざまなレイヤーをマップに、クリック可能なサイドバーにロードします。
唯一の問題は、サイドバー項目をクリックして対応するマーカーがクラスタリングオブジェクトにある場合、エラーが発生します。これを回避しました(Try / Catchを使用)、レイヤーが以下のように表示されるようにエラーを確認しています。
$('.item').click(function() {
currentlayer = this.id;
...
try {
geojson._layers[currentlayer].openPopup();
} catch(e) {
map.setView(geojson._layers[currentlayer]._latlng, 16);
geojson._layers[currentlayer].openPopup();
}
...
return false;
});
.
ズーム後にOpenPopup()メソッドを実行しようとしたときに同じエラーが発生した場合、もう一度サイドバーをクリックすると、ポップアップは大丈夫です。あなたはここでそれを行動で見ることができます:
解決
ええ、私はそのプラグインに関して同じ問題を抱えていました。だから私は自分のものを開発しました。ポップアップを正しく配置する必要があります。私はいくつかのイベントでも構築しているので、クラスタがクリックされたときにいくつかのコードを実行するか、ズームレベルが変化しないようにすることができます。
https://github.com/cavis/leafpile
また、私はあなたのものと同様のプロジェクトに取り組んでいます - https://github.com/cavis/slidemapper。マップ上に続くスライドショーを作成するためのjQueryプラグインです。私は私のLeafpileプラグインを直接統合しています。
他のヒント
zoomToShowLayer
を使用してクラスタレイヤーにズームする必要がありました: