Openstreetmap : 웹 페이지에지도 삽입 (예 : Google지도)


96

페이지에 OpenStreetMap을 삽입 / 매시업하는 방법이 있습니까 ( Google Maps API 작동 방식과 같이 )?

마커가있는 내 페이지 내부에지도를 표시하고 드래그 / 확대 / 축소 (라우팅 가능)를 허용해야합니다. 이에 대한 Javascript API가 있다고 생각하지만 찾을 수없는 것 같습니다.

검색하면 원시지도 데이터에 액세스 할 수 있는 API가 제공 되지만지도 편집에는 더 많은 것 같습니다. 게다가, 그것으로 작업하는 것은 AJAX에게 무거운 작업이 될 것입니다.

답변:



32

이제 모바일 장치를 염두에두고 구축 된 Leaflet 도 있습니다 .

빠른 시작 가이드 리플릿을 위해. 마커와 같은 기본 기능 외에도 플러그인 을 통해 외부 서비스를 사용한 라우팅 도 지원합니다 .

간단한 맵의 경우 IMHO는 OpenLayers보다 설정하는 것이 더 쉽고 빠르지 만 더 복잡한 사용을 위해 완전히 구성하고 조정할 수 있습니다.


25

간단한 OSM 미끄러운지도 데모 / 예제

"코드 스 니펫 실행"을 클릭하면 마커가있는 포함 된 OpenStreetMap 미끄러운지도를 볼 수 있습니다. 이것은 Leaflet 으로 만들어졌습니다 .

암호

// 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에 마커를 배치합니다.
  • Leaflet을 종속성으로 만 사용합니다.

노트 :

여기 에서 CDN 버전의 Leaflet을 사용 했지만 파일을 다운로드 하여 자신의 호스트에서 제공하고 포함 할 수 있습니다.


나는 자바 스크립트 함수에서 코드를 사용했으며 매력처럼 작동합니다. 그러나 다시 그 기능을 트리거하면 osm 맵이 확대되고 모든 것이 파괴됩니다. 어떤 해결책?
0x48piraj

2
@ 0x48piraj 문제를 설명하기 위해 jsfiddle 을 생성 하거나 더 나은 방법 : 무엇이 잘못되었는지를 보여주는 코드로 새로운 질문을하십시오.
totymedli dec.

이것은 아름답다. 감사합니다! 하지만 한 가지 질문 var target = L.latLng()은 좌표를 명확하게 정의하는 것입니다. 여러 점의 좌표가 JSON 구조 내에 저장되는 경우를 구현하는 방법을 보여줄 수 있습니까? 감사!
Lucas Aimaretto

1
이는지도의 중심이 위치해야하는 뷰에만 사용됩니다. L.marker(target).addTo(map);Just loop your structure를 사용 하여 마커를 추가하고 L.latLng()필요한만큼 s를 생성 하고 L.marker().
totymedli

6

mapstraction을 살펴 보십시오 . 이렇게하면 google, osm, yahoo 등을 기반으로지도를 제공하는 데 더 많은 유연성을 제공 할 수 있지만 코드를 변경할 필요는 없습니다.


웹 사이트가 다운 된 것 같습니다.
maddrag0n

1
작동하지만 "www"하위 도메인이 없어야합니다 . mapstraction.com .. 정확히 내가 검색 한 내용입니다. 감사합니다!
데이비드

mapstraction은 거의 10 년 동안 유지되지 않습니다. :)
Julian F. Weinert

5

CloudMade의 개발자 도구도 살펴 보겠습니다 . 그들은 아름다운 스타일의 OSM 기본지도 서비스, OpenLayers 플러그인 및 자체 경량의 매우 빠른 JavaScript 매핑 클라이언트를 제공합니다. 또한 가능한 요구 사항으로 언급 한 자체 라우팅 서비스를 호스팅합니다. 그들은 훌륭한 문서와 예제를 가지고 있습니다.


4

OpenLayers (지도 용 js API)를 사용할 수 있습니다.

있다 예를 어떻게 삽입 OSM 타일로 보여주는 자신의 페이지가.

편집 : OpenLayers 예제에 대한링크


그게 제가 찾던 것입니다. 정말 감사합니다. 하지만 대답은 하나만 받아 들일 수 있으므로 더 자세한 답변으로 이동합니다.
Piskvor는

3
링크가 끊어졌습니다.
totymedli

2

웹 페이지에 OSM지도를 삽입하려는 경우 가장 쉬운 방법은 OSM 웹 사이트에서 직접 iframe 코드를 가져 오는 것입니다.

  1. https://www.openstreetmap.org에서 원하는지도로 이동 하세요.
  2. 오른쪽에서 "공유"아이콘을 클릭 한 다음 "HTML"을 클릭합니다.
  3. 결과 iframe 코드를 웹 페이지에 직접 복사합니다. 다음과 같이 표시되어야합니다.

<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 위젯 플러그인을 추가합니다.

인구 조사국의 TIGER 라인 파일을 사용하여 Python Java 조합을 파악할 때까지 필러가 될 것입니다.


나, JS보다 Wordpress에 대해 훨씬 더 걱정되지만 그것은 의견의 문제입니다. :) 주셔서 감사합니다
Piskvor 건물 왼쪽

Btw TIGER는 미국 전용입니다.
Piskvor는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.