⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapserver.js

📁 用来在地图上做操作GIS,在地图上做标记
💻 JS
字号:
/* Copyright (c) 2006-2007 MetaCarta, Inc., published under the BSD license. * See http://svn.openlayers.org/trunk/openlayers/release-license.txt  * for the full text of the license. *//** * @requires OpenLayers/Layer/Grid.js * * Class: OpenLayers.Layer.MapServer * Instances of OpenLayers.Layer.MapServer are used to display * data from a MapServer CGI instance. * * Inherits from: *  - <OpenLayers.Layer.Grid> */OpenLayers.Layer.MapServer = OpenLayers.Class(OpenLayers.Layer.Grid, {    /**     * Constant: DEFAULT_PARAMS     * {Object} Hashtable of default parameter key/value pairs      */    DEFAULT_PARAMS: {        mode: "map",        map_imagetype: "png"    },    /**     * Constructor: OpenLayers.Layer.MapServer     * Create a new MapServer layer object     *     * Parameters:     * name - {String} A name for the layer     * url - {String} Base url for the MapServer CGI     *       (e.g. http://www2.dmsolutions.ca/cgi-bin/mapserv)     * params - {Object} An object with key/value pairs representing the     *          GetMap query string parameters and parameter values.     * options - {Ojbect} Hashtable of extra options to tag onto the layer     */    initialize: function(name, url, params, options) {        var newArguments = [];        newArguments.push(name, url, params, options);        OpenLayers.Layer.Grid.prototype.initialize.apply(this, newArguments);        if (arguments.length > 0) {            OpenLayers.Util.applyDefaults(                           this.params,                           this.DEFAULT_PARAMS                           );        }        // unless explicitly set in options, if the layer is transparent,         // it will be an overlay        if (options == null || options.isBaseLayer == null) {            this.isBaseLayer = ((this.params.transparent != "true") &&                                 (this.params.transparent != true));        }    },    /**     * Method: clone     * Create a clone of this layer     *     * Returns:     * {<OpenLayers.Layer.MapServer>} An exact clone of this layer     */    clone: function (obj) {        if (obj == null) {            obj = new OpenLayers.Layer.MapServer(this.name,                                           this.url,                                           this.params,                                           this.options);        }        //get all additions from superclasses        obj = OpenLayers.Layer.Grid.prototype.clone.apply(this, [obj]);        // copy/set any non-init, non-simple values here        return obj;    },    /**     * Method: addTile     * Creates a tile, initializes it, and adds it to the layer div.      *     * Parameters:     * bounds - {<OpenLayers.Bounds>}     *      * Returns:     * {<OpenLayers.Tile.Image>} The added OpenLayers.Tile.Image     */    addTile:function(bounds,position) {        return new OpenLayers.Tile.Image(this, position, bounds,                                          null, this.tileSize);    },        /**     * Method: getURL     * Return a query string for this layer     *     * Parameters:     * bounds - {<OpenLayers.Bounds>} A bounds representing the bbox      *                                for the request     *     * Returns:     * {String} A string with the layer's url and parameters and also      *          the passed-in bounds and appropriate tile size specified      *          as parameters.     */    getURL: function (bounds) {        bounds = this.adjustBounds(bounds);        // Make a list, so that getFullRequestString uses literal ","         var extent = [bounds.left, bounds. bottom, bounds.right, bounds.top];        var imageSize = this.getImageSize();                 // make lists, so that literal ','s are used         var url = this.getFullRequestString(                     {mapext:   extent,                      imgext:   extent,                      map_size: [imageSize.w, imageSize.h],                      imgx:     imageSize.w / 2,                      imgy:     imageSize.h / 2,                      imgxy:    [imageSize.w, imageSize.h]                      });                return url;    },        /**      * Method: getFullRequestString     * combine the layer's url with its params and these newParams.      *        * Parameter:     * newParams - {Object} New parameters that should be added to the      *                      request string.     * altUrl - {String} (optional) Replace the URL in the full request       *                              string with the provided URL.     *      * Returns:      * {String} A string with the layer's url and parameters embedded in it.     */    getFullRequestString:function(newParams, altUrl) {        // use layer's url unless altUrl passed in        var url = (altUrl == null) ? this.url : altUrl;                // if url is not a string, it should be an array of strings,         //  in which case we will randomly select one of them in order        //  to evenly distribute requests to different urls.        if (typeof url == "object") {            url = url[Math.floor(Math.random()*url.length)];        }           // requestString always starts with url        var requestString = url;                // create a new params hashtable with all the layer params and the         // new params together. then convert to string        var allParams = OpenLayers.Util.extend({}, this.params);        allParams = OpenLayers.Util.extend(allParams, newParams);        // ignore parameters that are already in the url search string        var urlParams = OpenLayers.Util.upperCaseObject(                            OpenLayers.Util.getParameters(url));        for(var key in allParams) {            if(key.toUpperCase() in urlParams) {                delete allParams[key];            }        }        var paramsString = OpenLayers.Util.getParameterString(allParams);                // MapServer needs '+' seperating things like bounds/height/width.        //   Since typically this is URL encoded, we use a slight hack: we        //  depend on the list-like functionality of getParameterString to        //  leave ',' only in the case of list items (since otherwise it is        //  encoded) then do a regular expression replace on the , characters        //  to '+'        //        paramsString = paramsString.replace(/,/g, "+");                if (paramsString != "") {            var lastServerChar = url.charAt(url.length - 1);            if ((lastServerChar == "&") || (lastServerChar == "?")) {                requestString += paramsString;            } else {                if (url.indexOf('?') == -1) {                    //serverPath has no ? -- add one                    requestString += '?' + paramsString;                } else {                    //serverPath contains ?, so must already have paramsString at the end                    requestString += '&' + paramsString;                }            }        }        return requestString;    },    CLASS_NAME: "OpenLayers.Layer.MapServer"});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -