OpenLayers开发记录(一)

来源:互联网 发布:决战武林神弓进阶数据 编辑:程序博客网 时间:2024/05/20 05:27

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 // 默认是否可见    });



0 0
原创粉丝点击