web-dev-qa-db-ja.com

リーフレットポップアップのルックアンドフィールをどのようにカスタマイズしますか?

リーフレットを使用して構築されたマップのカスタマイズを検討しています。ポップアップ(L.popup)をカスタマイズしたいと思います。

私が考えることができる唯一の方法は、新しいダイアログを使用してカスタムポップアップレイヤーを作成し、ユーザーがマーカーを操作するたびにこれを再配置することです。これにより、ユーザーがマップをドラッグしたときにポップアップが整列したままになります。

誰かがこれを行うための代替案または既存の方法を知っていますか?

ありがとう

23
ArthurGuy

CSSを使用してルックアンドフィールをカスタマイズする必要があります。以下のセレクターはおそらく興味深いものです。

.leaflet-popup-content-wrapper {
}

.leaflet-popup-content-wrapper .leaflet-popup-content {
}

.leaflet-popup-tip-container {
}

お使いのブラウザーに応じて、Firefoxの Firebug またはChrome/Safariの組み込み開発者ツールのようなツールを使用できます(ページの任意の場所を右クリックして、要素の検査をクリックするか、または ショートカット)を使用します )、ポップアップを検査し、変更する可能性のある追加のcssセレクターを見つけます。

その機能を拡張するには、まず ポップアップソースコード を確認する必要があります。何が起こっているのか感じられるまで、他のLeafletコンポーネントのソースを見てください。 Popupクラスを次のように拡張し、必要に応じて変更します。

L.CustomPopup = L.Popup.extend({
  // You changes here
});
36
Robert Kajic

ポップアップをカスタマイズする別の方法は、次のようなポップアップ用のカスタムCSSクラスを作成することです。

<style>
/* css to customize Leaflet default styles  */
.popupCustom .leaflet-popup-tip,
.popupCustom .leaflet-popup-content-wrapper {
    background: #e0e0e0;
    color: #234c5e;
}
</style>

次に、マップでdivを使用して、マーカーのカスタムポップアップをbindPopupメソッドで設定し、 customOptions css class name

// create popup contents
var customPopup = "<b>My office</b><br/><img src='http://netdna.webdesignerdepot.com/uploads/2014/05/workspace_06_previo.jpg' alt='maptime logo gif' width='150px'/>";

// specify popup options 
var customOptions =
    {
    'maxWidth': '400',
    'width': '200',
    'className' : 'popupCustom'
    }


var marker = L.marker([lat, lng], {icon: myIcon}).addTo(map);

// bind the custom popup 
marker.bindPopup(customPopup,customOptions);

それが役に立てば幸い。

14
Adrian C.

Leaflet.jsを使用するmapboxの例があります。この例は、 リーフレットのカスタムツールチップ の使用方法を示しています。

<style>
/*
 * These CSS rules affect the tooltips within maps with the custom-popup
 * class. See the full CSS for all customizable options:
 * https://github.com/mapbox/mapbox.js/blob/001754177f3985c0e6b4a26e3c869b0c66162c99/theme/style.css#L321-L366
*/
.custom-popup .leaflet-popup-content-wrapper {
  background:#2c3e50;
  color:#fff;
  font-size:16px;
  line-height:24px;
  }
.custom-popup .leaflet-popup-content-wrapper a {
  color:rgba(255,255,255,0.5);
  }
.custom-popup .leaflet-popup-tip-container {
  width:30px;
  height:15px;
  }
.custom-popup .leaflet-popup-tip {
  border-left:15px solid transparent;
  border-right:15px solid transparent;
  border-top:15px solid #2c3e50;
  }
</style>

<div class='custom-popup' id='map'></div>
4
MySchizoBuddy