OpenLayers开发记录(一)

1、创建Map

this.map = new OpenLayers.Map(this.mapdiv, this.options);

问题一:option是用来设置Map的,理论上Map的所有属性都可以通过option对象进行设置,比如div、maxResolution、minResolution,等。

示例1:

map = new OpenLayers.Map('map',{
    maxExtent: new OpenLayers.Bounds(
            -128 * 156543.0339,
            -128 * 156543.0339,
            128 * 156543.0339,
            128 * 156543.0339),
    maxResolution: 156543.0339,
    units: 'm',
    projection: new OpenLayers.Projection('EPSG:900913'),
    displayProjection: new OpenLayers.Projection("EPSG:4326")
});
示例2:
var mapOptions = {
    maxExtent: new OpenLayers.Bounds(-8242894.927728, 4965204.031195,
            -8227290.161511, 4994963.723637),
    maxResolution: 116.24879860156216,
    projection: "EPSG:900913"
};
var map = new OpenLayers.Map('map', mapOptions);

问题二:可以延迟渲染地图。

map = new OpenLayers.Map();
layer = new OpenLayers.Layer.WMS(
       "OpenLayers WMS",
       "http://vmap0.tiles.osgeo.org/wms/vmap0",
       {layers: 'basic'}
);
map.addLayer(layer);
map.render("container_id");

2、创建瓦片图层Layer

问题一:Geoserver发布PostgreSQL/PostGIS中的地图数据。

首先,需要使用PostGIS的shp2pgsql工具将shapefile数据导入数据库中。

然后,在Geoserver中创建Workspaces、Stores和Layers,在Layers中发布数据库中的某个表时,坐标系(Native SRS,Declared SRS)部分需要注意。

Native SRS,本机SRS是指地图数据本身的坐标参考系统,这是由地图数据本身的属性决定的,也是不可修改的。GeoServer会自动从数据文件中读取这一信息。相对应的Native Bounding Box则是根据本机SRS自动计算出来的边框,我们点击从数据中计算就能计算出来边框范围。

Declared SRS,定义SRS是指我们自己想要定义显示地图数据的坐标参考系统,我们通过右边的查找按钮进行查找选择。对于国内用户来说,常用的坐标系统可以通过键入“beijing”、”xian”或者4326(WGS-84的编码序号)进行查找选择。选择确定后,通过点击“compute from nativ bounds”可以计算出在这个坐标系统下的边界。

最后,根据图层预览(Layer Preview)中WMS、WFS链接的信息,就可以在OpenLayers中调用该图层了。

问题二:图层Z-Index,参考Map.js中的描述:

Z_INDEX_BASE: {
    BaseLayer: 100,
    Overlay: 325,
    Feature: 725,
    Popup: 750,
    Control: 1000
},
同时,还可以通过setZIndex()函数设置z-index。

问题三:图层的缩放级别、分辨率和范围设置。参考:http://www.shalilang.com/openlayers-map-scale-zoom-levels-methods/

OpenLayers.DOTS_PER_INCH = 72;
var options = {

//  various ways of specifying similar things
//  设置分辨率级别
    resolutions: [1.40625, 0.703125, 0.3515625, 0.17578125, 0.087890625, 0.0439453125, 0.02197265625, 0.010986328125, 0.0054931640625, 0.00274658203125, 0.00137329101],
//  直接设置比例尺
    scales: [50000000, 10000000],
//  设置最大最小分辨率
    maxResolution: 0.17578125,
    minResolution: 0.0439453125,
//  设置最大最小比例尺
    maxScale: 10000000,
    minScale: 50000000,
//  设置缩放级别层数
    numZoomLevels: 5,
    units: "dd",
//  设置范围
    minResolution: "auto",
    minExtent: new OpenLayers.Bounds(-1, -1, 1, 1),
    maxResolution: "auto",
    maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90)
};
map = new OpenLayers.Map( 'map' , options);


问题四:创建图层中param和option的理解

param是用来发送到地图服务器,用于地图瓦片的生成。option用于设置客户端如何显示地图瓦片。

示例:

var tiled = new OpenLayers.Layer.WMS(
    "Indoor", "http://localhost:8080/geoserver3D/wms",
    {   // param参数对象,传去服务器配置地图的特点
        LAYERS: 'gczxshpfloor', //请求的图层,本例是图层Group
        STYLES: '', // 样式
        format: format, // 返回图片的格式
        tiled: true, //
        tilesOrigin: bounds.left + ',' + bounds.bottom,// 瓦片起点
        transparent: 'true' //透明图层
    },
    {
        buffer: 0, 
        displayOutsideMaxExtent: true, // 最大范围以外的地图是否显示
        maxExtent: bounds, // 最大范围
        isBaseLayer: false,  //是基础层,还是覆盖层
        visibility: true // 默认是否可见
    }
);



你可能感兴趣的:(OpenLayers)