Skip to main content

Module osm_embed

Module osm_embed 

Source
Expand description

OpenStreetMap 埋め込み(<iframe src="https://www.openstreetmap.org/export/embed.html?bbox=..&marker=..">) を、タイル画像を並べて描くための計算(純粋モジュール)。

【2026-09-26】現在の OSM 埋め込みページは MapLibre GL(WebGL で描画)で、AtmOS には WebGL が無いため iframe の中身をそのまま実行しても地図は出ない。一方、地図タイル自体は普通の PNG (https://tile.openstreetmap.org/{z}/{x}/{y}.png)なので、埋め込み URL の範囲(bbox)と マーカーから、表示に必要なタイルと配置を計算してネイティブに描く(PDF を内蔵ビューアで 表示するのと同じ考え方)。ズームは MapLibre/Leaflet の fitBounds と同じく「範囲が枠に収まる 最大の整数ズーム」、中心は範囲の中心。

座標は Web メルカトル(EPSG:3857)。ズーム z の世界全体の大きさは 256·2^z ピクセル。

Structs§

Embed
埋め込み URL から読み取った情報。
Plan
描画計画。座標は iframe の左上を原点とする px。

Constants§

MAX_ZOOM
OSM 標準タイルの最大ズーム。
TILE
タイル 1 枚の大きさ(px)。

Functions§

fit_zoom
範囲が w×h の枠に収まる最大の整数ズーム(0〜MAX_ZOOM)。
parse_embed_url
URL が OSM の埋め込みページなら、その範囲とマーカーを返す。
plan
w×h の枠に地図を描く計画を立てる。枠が空なら None。
project
経度・緯度 → ズーム z の世界ピクセル座標。