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

📄 util.js

📁 用来在地图上做操作GIS,在地图上做标记
💻 JS
📖 第 1 页 / 共 2 页
字号:
/* 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. *//** * Namespace: Util */OpenLayers.Util = {};/**  * Function: getElement * This is the old $() from prototype */OpenLayers.Util.getElement = function() {    var elements = [];    for (var i = 0; i < arguments.length; i++) {        var element = arguments[i];        if (typeof element == 'string') {            element = document.getElementById(element);        }        if (arguments.length == 1) {            return element;        }        elements.push(element);    }    return elements;};/**  * Maintain $() from prototype */if ($ == null) {    var $ = OpenLayers.Util.getElement;}/** * APIFunction: extend * Copy all properties of a source object to a destination object.  Modifies *     the passed in destination object. * * Parameters: * destination - {Object} The object that will be modified * source - {Object} The object with properties to be set on the destination * * Returns: * {Object} The destination object. */OpenLayers.Util.extend = function(destination, source) {    if(destination && source) {        for(var property in source) {            destination[property] = source[property];        }        /**         * IE doesn't include the toString property when iterating over an object's         * properties with the for(property in object) syntax.  Explicitly check if         * the source has its own toString property.         */        if(source.hasOwnProperty && source.hasOwnProperty('toString')) {            destination.toString = source.toString;        }    }    return destination;};/**  * Function: removeItem * Remove an object from an array. Iterates through the array *     to find the item, then removes it. * * Parameters: * array - {Array} * item - {Object} *  * Return * {Array} A reference to the array */OpenLayers.Util.removeItem = function(array, item) {    for(var i=0; i < array.length; i++) {        if(array[i] == item) {            array.splice(i,1);            //break;more than once??        }    }    return array;};/** * Function: clearArray * *Deprecated*. This function will disappear in 3.0. * Please use "array.length = 0" instead. *  * Parameters: * array - {Array} */OpenLayers.Util.clearArray = function(array) {    var msg = "OpenLayers.Util.clearArray() is Deprecated." +              " Please use 'array.length = 0' instead.";    OpenLayers.Console.warn(msg);    array.length = 0;};/**  * Function: indexOf * Seems to exist already in FF, but not in MOZ. *  * Parameters: * array - {Array} * obj - {Object} *  * Returns: * {Integer} The index at, which the object was found in the array. *           If not found, returns -1.v */OpenLayers.Util.indexOf = function(array, obj) {    for(var i=0; i < array.length; i++) {        if (array[i] == obj) return i;    }    return -1;   };/** * Function: modifyDOMElement *  * Modifies many properties of a DOM element all at once.  Passing in  * null to an individual parameter will avoid setting the attribute. * * Parameters: * id - {String} The element id attribute to set. * px - {<OpenLayers.Pixel>} The left and top style position. * sz - {<OpenLayers.Size>}  The width and height style attributes. * position - {String}       The position attribute.  eg: absolute,  *                           relative, etc. * border - {String}         The style.border attribute.  eg: *                           solid black 2px * overflow - {String}       The style.overview attribute.   * opacity - {Float}         Fractional value (0.0 - 1.0) */OpenLayers.Util.modifyDOMElement = function(element, id, px, sz, position,                                             border, overflow, opacity) {    if (id) {        element.id = id;    }    if (px) {        element.style.left = px.x + "px";        element.style.top = px.y + "px";    }    if (sz) {        element.style.width = sz.w + "px";        element.style.height = sz.h + "px";    }    if (position) {        element.style.position = position;    }    if (border) {        element.style.border = border;    }    if (overflow) {        element.style.overflow = overflow;    }    if (opacity) {        element.style.opacity = opacity;        element.style.filter = 'alpha(opacity=' + (opacity * 100) + ')';    }};/**  * Function: createDiv * Creates a new div and optionally set some standard attributes. * Null may be passed to each parameter if you do not wish to * set a particular attribute.d *  * Note: zIndex is NOT set *  * Parameters: * id - {String} An identifier for this element.  If no id is *               passed an identifier will be created  *               automatically. * px - {<OpenLayers.Pixel>} The element left and top position.  * sz - {<OpenLayers.Size>} The element width and height. * imgURL - {String} A url pointing to an image to use as a  *                   background image. * position - {String} The style.position value. eg: absolute, *                     relative etc. * border - {String} The the style.border value.  *                   eg: 2px solid black * overflow - {String} The style.overflow value. Eg. hidden * opacity - {Float} Fractional value (0.0 - 1.0) *  * Returns:  * {DOMElement} A DOM Div created with the specified attributes. */OpenLayers.Util.createDiv = function(id, px, sz, imgURL, position,                                      border, overflow, opacity) {    var dom = document.createElement('div');    if (imgURL) {        dom.style.backgroundImage = 'url(' + imgURL + ')';    }    //set generic properties    if (!id) {        id = OpenLayers.Util.createUniqueID("OpenLayersDiv");    }    if (!position) {        position = "absolute";    }    OpenLayers.Util.modifyDOMElement(dom, id, px, sz, position,                                      border, overflow, opacity);    return dom;};/** * Function: createImage * Creates an img element with specific attribute values. *   * Parameters: * id - {String} The id field for the img.  If none assigned one will be *               automatically generated. * px - {<OpenLayers.Pixel>} The left and top positions. * sz - {<OpenLayers.Size>} The style.width and style.height values. * imgURL - {String} The url to use as the image source. * position - {String} The style.position value. * border - {String} The border to place around the image. * delayDisplay - {Boolean} If true waits until the image has been *                          loaded. * opacity - {Float} Fractional value (0.0 - 1.0) *  * Returns: * {DOMElement} A DOM Image created with the specified attributes. */OpenLayers.Util.createImage = function(id, px, sz, imgURL, position, border,                                       opacity, delayDisplay) {    var image = document.createElement("img");    //set generic properties    if (!id) {        id = OpenLayers.Util.createUniqueID("OpenLayersDiv");    }    if (!position) {        position = "relative";    }    OpenLayers.Util.modifyDOMElement(image, id, px, sz, position,                                      border, null, opacity);    if(delayDisplay) {        image.style.display = "none";        OpenLayers.Event.observe(image, "load",             OpenLayers.Function.bind(OpenLayers.Util.onImageLoad, image));        OpenLayers.Event.observe(image, "error",             OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError, image));            }        //set special properties    image.style.alt = id;    image.galleryImg = "no";    if (imgURL) {        image.src = imgURL;    }            return image;};/** * Function: setOpacity * Deprecated. * This function has been deprecated. Instead, please use  *     OpenLayers.Util.modifyDOMElement()  *     or  *     OpenLayers.Util.modifyAlphaImageDiv() *  * Set the opacity of a DOM Element *     Note that for this function to work in IE, elements must "have layout" *     according to: *     http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/haslayout.asp * * Parameters: * element - {DOMElement} Set the opacity on this DOM element * opacity - {Float} Opacity value (0.0 - 1.0) */OpenLayers.Util.setOpacity = function(element, opacity) {    OpenLayers.Util.modifyDOMElement(element, null, null, null,                                     null, null, null, opacity);}/** * Function: onImageLoad */OpenLayers.Util.onImageLoad = function() {    // The complex check here is to solve issues described in #480.    // Every time a map view changes, it increments the 'viewRequestID'     // property. As the requests for the images for the new map view are sent    // out, they are tagged with this unique viewRequestID.     //     // If an image has no viewRequestID property set, we display it regardless,     // but if it does have a viewRequestID property, we check that it matches     // the viewRequestID set on the map.    //     // If the viewRequestID on the map has changed, that means that the user    // has changed the map view since this specific request was sent out, and    // therefore this tile does not need to be displayed (so we do not execute    // this code that turns its display on).    //    if (!this.viewRequestID ||        (this.map && this.viewRequestID == this.map.viewRequestID)) {         this.style.backgroundColor = null;        this.style.display = "";      }};/** * Property: onImageLoadErrorColor * {String} The color tiles with load errors will turn. *          Default is "pink" */OpenLayers.Util.onImageLoadErrorColor = "pink";/** * Property: onImageLoadErrorColor * {Integer} How many times should we try to reload an image before giving up? *           Default is 0 */OpenLayers.IMAGE_RELOAD_ATTEMPTS = 0;/** * Function: onImageLoadError  */OpenLayers.Util.onImageLoadError = function() {    this._attempts = (this._attempts) ? (this._attempts + 1) : 1;    if(this._attempts <= OpenLayers.IMAGE_RELOAD_ATTEMPTS) {        this.src = this.src;    } else {        this.style.backgroundColor = OpenLayers.Util.onImageLoadErrorColor;    }    this.style.display = "";};/** * Function: alphaHack * Checks whether it's necessary (and possible) to use the png alpha * hack which allows alpha transparency for png images under Internet * Explorer. *  * Returns: * {Boolean} true if alpha has is necessary and possible, false otherwise. */OpenLayers.Util.alphaHack = function() {    var arVersion = navigator.appVersion.split("MSIE");    var version = parseFloat(arVersion[1]);    var filter = false;        // IEs4Lin dies when trying to access document.body.filters, because     // the property is there, but requires a DLL that can't be provided. This    // means that we need to wrap this in a try/catch so that this can    // continue.        try {         filter = document.body.filters;    } catch (e) {    }            return ( filter &&                      (version >= 5.5) && (version < 7) );}/**  * Function: modifyAlphaImageDiv *  * div - {DOMElement} Div containing Alpha-adjusted Image * id - {String} * px - {<OpenLayers.Pixel>} * sz - {<OpenLayers.Size>} * imgURL - {String} * position - {String} * border - {String} * sizing {String} 'crop', 'scale', or 'image'. Default is "scale" * opacity - {Float} Fractional value (0.0 - 1.0) */ OpenLayers.Util.modifyAlphaImageDiv = function(div, id, px, sz, imgURL,                                                position, border, sizing,                                                opacity) {    OpenLayers.Util.modifyDOMElement(div, id, px, sz);    var img = div.childNodes[0];    if (imgURL) {        img.src = imgURL;    }    OpenLayers.Util.modifyDOMElement(img, div.id + "_innerImage", null, sz,                                      "relative", border);    if (opacity) {        div.style.opacity = opacity;        div.style.filter = 'alpha(opacity=' + (opacity * 100) + ')';    }        if (OpenLayers.Util.alphaHack()) {        div.style.display = "inline-block";        if (sizing == null) {            sizing = "scale";        }                div.style.filter = "progid:DXImageTransform.Microsoft" +                           ".AlphaImageLoader(src='" + img.src + "', " +                           "sizingMethod='" + sizing + "')";        if (div.style.opacity) {            div.style.filter += " alpha(opacity=" + div.style.opacity * 100 + ")";        }        img.style.filter = "progid:DXImageTransform.Microsoft" +                                ".Alpha(opacity=0)";    }};/**  * Function: createAlphaImageDiv *  * id - {String} * px - {<OpenLayers.Pixel>} * sz - {<OpenLayers.Size>} * imgURL - {String} * position - {String} * border - {String} * sizing {String} 'crop', 'scale', or 'image'. Default is "scale" * delayDisplay{Boolean} *  * Returns: * {DOMElement} A DOM Div created with a DOM Image inside it. If the hack is  *              needed for transparency in IE, it is added. */ OpenLayers.Util.createAlphaImageDiv = function(id, px, sz, imgURL,                                                position, border, sizing,                                                opacity, delayDisplay) {        var div = OpenLayers.Util.createDiv();    var img = OpenLayers.Util.createImage(null, null, null, null, null, null,                                           null, false);    div.appendChild(img);    if (delayDisplay) {        img.style.display = "none";        OpenLayers.Event.observe(img, "load",            OpenLayers.Function.bind(OpenLayers.Util.onImageLoad, div));        OpenLayers.Event.observe(img, "error",            OpenLayers.Function.bind(OpenLayers.Util.onImageLoadError, div));    }    OpenLayers.Util.modifyAlphaImageDiv(div, id, px, sz, imgURL, position,                                         border, sizing, opacity);        return div;};/**  * Function: upperCaseObject * Creates a new hashtable and copies over all the keys from the  *     passed-in object, but storing them under an uppercased *     version of the key at which they were stored. *  * Parameters:  * object - {Object} *  * Returns:  * {Object} A new Object with all the same keys but uppercased */OpenLayers.Util.upperCaseObject = function (object) {    var uObject = {};    for (var key in object) {        uObject[key.toUpperCase()] = object[key];    }    return uObject;};/**  * Function: applyDefaults * Takes a hashtable and copies any keys that don't exist from *     another hashtable, by analogy with OpenLayers.Util.extend() from *     Prototype.js.

⌨️ 快捷键说明

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