"OpenLayers库提供了一个JavaScript API,可以很容易地将各种来源的地图合并到您的网页或应用程序中." 但是,通过扫描文档,各种来源似乎只包括基于网络的地球地图提供者.
是否可以使用OpenLayers在本地存储的底图上显示功能,例如海图(例如http://www.charts.noaa.gov/InteractiveCatalog/nrnc.shtml?rnc=12280)或任意(非地球)光栅图像与人工笛卡尔坐标?
- 编辑 -
以下页面显示了本地存储的图像,与文档说明图像必须可通过Web访问相反.但是,有没有办法使用多个图像文件作为瓷砖?而不是单个文件?
<html>
<head>
<title>OpenLayers Example</title>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body>
<div style="width:640px; height:480px; border:3px solid" id="map"></div>
<script defer="defer" type="text/javascript">
var options = {
maxResolution: 10,
units: 'm',
resolutions: [10, 5, 2, 1, .5],
};
var map = new OpenLayers.Map('map', options);
var extent = new OpenLayers.Bounds(-4824, -3294, 4824, 3294);
var size = new OpenLayers.Size(4824, 3294);
var img = new OpenLayers.Layer.Image( "Basemap",
"maps/map0.jpg", extent, size, {layers: 'basic'} );
map.addLayer(img);
map.zoomToMaxExtent();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这里有一个示例在本地使用OpenStreetMap磁贴,而不直接使用http.显然,你需要将你的瓷砖放在XYZ格式中才能工作.这是OSM层的来源.每个图块的xyz都是从OpenLayers.Layer.XYZ派生的,当然,它是为简化和全球覆盖而设计的.但是,您可以使用自己的坐标系轻松创建自己的图层,以类似的方式工作.
从装载的角度来看相关的是:
var newLayer = new OpenLayers.Layer.OSM("Local Tiles",
"tiles/${z}/${x}/${y}.png",
{numZoomLevels: 19,
alpha: true,
isBaseLayer: false}
);
Run Code Online (Sandbox Code Playgroud)
注意:我发现,一般来说,示例和源代码是比文档更好的信息来源.我这样说没有批评,OpenLayers像大多数开源项目一样限制了开发人员资源,所以只是因为没有任何记录,并不意味着它无法完成.