【folium】地図上のクリックした場所にピンを差すClickForMarker()
今回は、foliumで作成した地図上で「クリックした場所にマーカーを差し散らかす」方法です。
差し散らかさなくてもいいけどw
前回の投稿
【folium】地図上でクリックした場所の座標をpopupで表示させるLatLngPopup() - よちよちpython
も参考。
地図作成
import folium #ベースの地図作成 (中心座標は適当です) m = folium.Map(location=[36, 138], zoom_start=12) # 中心座標に目印(赤)を追加 (特に必要なし) folium.Marker([36, 138], popup="地図の中心座標", icon=folium.Icon(color="red") ).add_to(m) # クリックでピンを差し散らかすメソッドを追加 folium.ClickForMarker(popup="追加したピン").add_to(m) # htmlファイルに保存する時は #m.save("ClickForMarker.html") # 表示 m
↑の地図に赤のピンだけが差してあります。
どこかをクリックすると、その場所にマーカーが設置されます。
クリックし過ぎると散らかりますw
【
folium.ClickForMarker()
のマーカーの色について】
追加されるマーカーの色は指定できません。 デフォルトの青。
引数はClickForMarker(popup=None)
で、popupのみ変更可能。
クリックで設置したマーカーのクリア方法は分からない。
Jupyterで実行中ならセルを再実行する。地図をhtmlファイルに保存した場合はファイルの再読み込み。これで地図が初期化される。
追加するマーカーのpopupを複数用意できる?
上の列では、追加されるマーカーのpopupは全て「追加したピン」になりますが、別のpopupでも差せないだろうか?
ClickForMarker
メソッドを複数書けばどうなる?
import folium #ベースの地図作成 m = folium.Map(location=[36, 138], zoom_start=12) # 中心座標の目印(赤)を追加 (特に必要なし) folium.Marker([36, 138], popup="地図の中心座標", icon=folium.Icon(color="red") ).add_to(m) # 差し散らかすメソッド1を追加 folium.ClickForMarker(popup="追加メソッド1").add_to(m) # 差し散らかすメソッド2を追加 folium.ClickForMarker(popup="追加メソッド2").add_to(m) # 表示 m
この場合、クリックして追加されるマーカーは全て「追加メソッド2」になる。
先に書いたClickForMarkerの追加メソッド1は無視される。よってこの方法は使えない。
FeatureGroup()
とLayerControl()
を使って層ごとにClickForMarker()
を設置すれば行けるんでは?と思い、試してみたがマーカーが設置されなかった。層の分離は趣旨が違うので別の機会に。
この件は放置。需要もなかろうw
おわりに
使い途としては、クリックしてマーカーを追加し、スクリーンショットで画像を保存するとかかな。
変更後の地図が残るでもないようですし、簡易の使用に限定かな。
以上です。