有没有办法将OpenStreetMap嵌入/混搭到您的页面中(例如Google Maps API的工作方式)?
我需要在页面内显示带有一些标记的地图,并允许在屏幕上拖动/缩放(可能是路由)。我怀疑会为此使用一些Javascript API,但我似乎找不到它。
有没有办法将OpenStreetMap嵌入/混搭到您的页面中(例如Google Maps API的工作方式)?
我需要在页面内显示带有一些标记的地图,并允许在屏幕上拖动/缩放(可能是路由)。我怀疑会为此使用一些Javascript API,但我似乎找不到它。
Answers:
您需要使用一些JavaScript资料来显示地图。OpenLayers是为此的第一选择。
在http://wiki.openstreetmap.org/wiki/OpenLayers_Simple_Example中有一个示例,在以下位置有更高级的示例
http://wiki.openstreetmap.org/wiki/OpenLayers_Marker
和
http://wiki.openstreetmap.org/wiki/Openlayers_POI_layer_example
单击“运行代码段”以查看带有标记的嵌入式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: '© <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>
注意:
var target = L.latLng()
您可以清楚地定义坐标。有机会展示如何实现将多个点的坐标存储在JSON结构中的情况吗?谢谢!
L.marker(target).addTo(map);
Just循环结构添加标记,并L.latLng()
根据需要创建任意多个s并将其传递给L.marker()
。
看一看mapstraction。这样可以为您提供更大的灵活性,以提供基于google,osm,yahoo等的地图,但是您的代码无需更改。
我还将看一下CloudMade的开发人员工具。他们提供风格精美的OSM基本地图服务,OpenLayers插件,甚至提供自己的轻量级,非常快速的JavaScript映射客户端。它们还托管自己的路由服务,您提到了这是一项可能的要求。他们有很好的文档和示例。
如果您只想在网页上嵌入OSM映射,最简单的方法是直接从OSM网站获取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&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“ 部署自己的Slippy Map ”。