openstreetmap:Webページにマップを埋め込む(Googleマップなど)


95

OpenStreetMapをページに埋め込む/マッシュアップする方法はありますか(Google Maps APIのように)?

マーカーを使用してページ内にマップを表示し、ドラッグ/ズーム、おそらくルーティングを許可する必要があります。これにはJavascript APIがあるのではないかと思いますが、見つからないようです。

検索すると、未加工の地図データにアクセスするためAPIが表示されますが、それは地図の編集に適しているようです。それに加えて、それを扱うことはAJAXにとって大変な仕事です。

回答:



32

現在、モバイルデバイスを念頭に置いて構築されたLeafletもあります。

リーフレットのクイックスタートガイドがあります。マーカーなどの基本的な機能に加えて、プラグインを使用すると、外部サービスを使用したルーティングもサポートされます

シンプルなマップの場合、IMHOの設定はOpenLayersよりも簡単で高速ですが、完全に構成可能であり、より複雑な用途に合わせて調整できます。


25

シンプルなOSMスリッピーマップのデモ/例

「コードスニペットの実行」をクリックして、マーカーが埋め込まれたOpenStreetMap埋め込みマップスリッピーマップを表示します。これはリーフレットで作成されました。

コード

// Where you want to render the map.
var element = document.getElementById('osm-map');

// Height has to be set. You can do this in CSS too.
element.style = 'height:300px;';

// Create Leaflet map on map element.
var map = L.map(element);

// Add OSM tile leayer to the Leaflet map.
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

// Target's GPS coordinates.
var target = L.latLng('47.50737', '19.04611');

// Set map's center to target with zoom 14.
map.setView(target, 14);

// Place a marker on the same location.
L.marker(target).addTo(map);
<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
<link href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" rel="stylesheet"/>
<div id="osm-map"></div>

スペック

  • OpenStreetMapsを使用します。
  • マップをターゲットGPSの中心に配置します。
  • ターゲットGPSにマーカーを配置します。
  • 依存関係としてリーフレットのみを使用します。

注意:

ここではリーフレットのCDNバージョンを使用しましたが、ファイルをダウンロードして、自分のホストから提供したり含めたりすることができます。


私はあなたのコードをJavaScript関数で使用しましたが、それは魅力のように機能します。しかし、再び、その関数をトリガーして、osmマップを拡大し、すべてを破壊します。解決策はありますか?
0x48piraj 2017

2
@ 0x48piraj 問題を実証するためのjsfiddleを作成してください。それ以上の場合は、が問題なのかを示すコードで新しい質問をしてください。
totymedli 2017

美しいです。どうもありがとう!ただし、1つの質問:var target = L.latLng()座標を明確に定義します。複数のドットの座標がJSON構造内に格納されるケースを実装する方法を示すチャンスはありますか?ありがとう!
Lucas Aimaretto

1
これは、マップの中心を配置する必要があるビューにのみ使用されます。L.marker(target).addTo(map);Justでマーカーを追加するには、構造をループし、L.latLng()必要な数のを作成し、それらをに渡しますL.marker()
totymedli

6

見てくださいmapstractionを。これにより、google、osm、yahooなどに基づくマップを提供する柔軟性が高まりますが、コードを変更する必要はありません。


彼らのウェブサイトはダウンしているようです。
maddrag0n 2012

1
それは機能しますが、「www」サブドメインがない場合のみ:mapstraction.com ..正確に私が検索したもの、ありがとうございます!
デヴィッド・

Mapstractionは現在約10年間維持されていません:)
Julian F. Weinert

5

CloudMadeの開発者ツールも見てみます。彼らは、美しくスタイル付けされたOSMベースマップサービス、OpenLayersプラグイン、そして独自の軽量で非常に高速なJavaScriptマッピングクライアントさえ提供します。また、可能な要件として説明した独自のルーティングサービスもホストします。彼らは素晴らしいドキュメントと例を持っています。


4

OpenLayers(マップ用のjs API)を使用できます。

OSMタイルを埋め込む方法を示すページのがあります。

編集:OpenLayersサンプルへの新しいリンク


それが私が探していたものです、本当にありがとう。ただし、回答は1つしか受け付けないため、より詳細な回答になります。
Piskvorが

3
リンクが停止しています。
totymedli 2017年

2

OSMマップをWebページに埋め込むだけの場合、最も簡単な方法は、OSM Webサイトから直接iframeコードを取得することです。

  1. https://www.openstreetmap.orgで目的のマップに移動します
  2. 右側にある[共有]アイコンをクリックし、[HTML]をクリックします
  3. 結果のiframeコードを直接Webページにコピーします。次のようになります。

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" 
src="https://www.openstreetmap.org/export/embed.html?bbox=-62.04673002474011%2C16.95487694424327%2C-61.60521696321666%2C17.196751341562923&amp;layer=mapnik" 
style="border: 1px solid black"></iframe>
<br/><small><a href="https://www.openstreetmap.org/#map=12/17.0759/-61.8260">View Larger Map</a></small>

もっと複雑なことをしたい場合は、OSM wiki「Deploying your own Slippy Map」を参照してください。


0

Javascriptを恐れるなら、簡単な方法があります...私はまだ学習中です。Open Streetは、カスタマイズ可能なシンプルなWordpressプラグインを作成します。OSM Widgetプラグインを追加します。

これは、国勢調査局のTIGER行ファイルのカバーを使用してPython Javaの概念を理解するまでは、フィラーになります。


私、JSよりもワードプレスの方がずっと心配ですが、それは意見の問題です。ありがとうございました:)
Piskvorは

Btw TIGERは米国のみです。
Piskvorが
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.