使用带有本地底图的openlayers?

Dav*_*ave 2 openlayers

"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)

Joh*_*ell 7

这里有一个示例本地使用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像大多数开源项目一样限制了开发人员资源,所以只是因为没有任何记录,并不意味着它无法完成.