diff options
-rw-r--r-- | gmap_arcgis.js | 145 |
1 files changed, 63 insertions, 82 deletions
diff --git a/gmap_arcgis.js b/gmap_arcgis.js index 454071a..78a664e 100644 --- a/gmap_arcgis.js +++ b/gmap_arcgis.js @@ -8,115 +8,92 @@ function gmapArcgis(config) { deforestation: [], - getConfig: function() { - return config; - }, - - // Show all defined polygons - showPolygons: function(polygons) { - for (j = 0; j < polygons.length; j++) { - this.showPolygon(polygons[j]); - } - }, - - // Hide all defined polygons - hidePolygons: function(polygons) { - for (j = 0; j < polygons.length; j++) { - polygons[j].overlay.setOpacity(0); - unblockUI(); - } - }, - // Add polygons from a given ArcGIS MapServer Layer - showPolygon: function(params) { - var defaultOpacity = (params.opacity != undefined) ? params.opacity : 0.55; + showPolygon: function(element) { + var defaultOpacity = (this.config['layers'][element].opacity != undefined) ? this.config['layers'][element].opacity : 0.55; - if (typeof params.overlay != 'undefined') { - params.overlay.setOpacity(defaultOpacity); + if (typeof this.config['layers'][element].overlay != 'undefined') { + this.config['layers'][element].overlay.setOpacity(defaultOpacity); this.unblockUI(); return; } - uri = params['uri']; - layers = params['layers']; + uri = this.config['layers'][element]['uri']; + layers = this.config['layers'][element]['layers']; - params.overlay = new gmaps.ags.MapOverlay(uri, { + this.config['layers'][element].overlay = new gmaps.ags.MapOverlay(uri, { exportOptions: { layerIds: layers, layerOption: 'show', } }); - params.overlay.setMap(map); - params.overlay.setOpacity(defaultOpacity); + this.config['layers'][element].overlay.setMap(this.map); + this.config['layers'][element].overlay.setOpacity(defaultOpacity); - if (params.callback == undefined) { + if (this.config['layers'][element].callback == undefined) { // Default callback: remove the blockUI once the layer is shown - google.maps.event.addListener(params.overlay.getMapService(), 'update', function() { - unblockUI(); + google.maps.event.addListener(this.config['layers'][element].overlay.getMapService(), 'update', function() { + this.unblockUI(); }); } else { google.maps.event.addListener(params.overlay.getMapService(), 'update', function() { - params.callback(map, params) ; unblockUI(); + this.config['layers'][element].callback(this.map, this.config['layers'][element]) ; this.unblockUI(); }); } }, // Add a KML to the map - showKML: function(params) { - params.overlay = new google.maps.KmlLayer(params.uri); - params.overlay.setMap(map); + showKML: function(element) { + this.config['kmls'][element].overlay = new google.maps.KmlLayer(this.config['kmls'][element].uri); + this.config['kmls'][element].overlay.setMap(this.map); }, // Add a KML layer into the map - addKML: function(params) { - if (typeof params.overlay != 'undefined') { - params.overlay.setOpacity(params.opacity); + addKML: function(element) { + if (typeof this.config['kmls'][element].overlay != 'undefined') { + this.config['kmls'][element].overlay.setOpacity(this.config['kmls'][element].opacity); unblockUI(); - return params.overlay; + return this.config['kmls'][element].overlay; } - if (params.overlayTime != undefined) { - this.showOverlay(params.overlayTime); + if (this.config['kmls'][element].overlayTime != undefined) { + this.showOverlay(this.config['kmls'][element].overlayTime); } - this.showKML(params); - - return params.overlay; + this.showKML(element); }, // Add a layer to the map - addLayers: function(params) { - if (typeof params.overlay != 'undefined') { - params.overlay.setOpacity(params.opacity); - unblockUI(); - return params.overlay; + addLayers: function(element) { + if (typeof this.config['layers'][element].overlay != 'undefined') { + this.config['layers'][element].overlay.setOpacity(this.config['layers'][element].opacity); + this.unblockUI(); + return this.config['layers'][element].overlay; } - if (params.overlayTime != undefined) { - this.showOverlay(params.overlayTime); + if (this.config['layers'][element].overlayTime != undefined) { + this.showOverlay(this.config['layers'][element].overlayTime); } // TODO: support for clickable polygons - this.showPolygon(params); - - return params.overlay; + this.showPolygon(element); }, // Add makers to the map - addMarkers: function(params) { - var bounds = map.getBounds(); + addMarkers: function(elements) { + var bounds = this.map.getBounds(); - if (params.overlay != undefined) { - this.toggleMarkers(params); + if (this.config['markers'][element].overlay != undefined) { + this.toggleMarkers(this.config['markers'][element]); return; } else { - params.overlay = []; + this.config['markers'][element].overlay = []; } - if (params.overlayTime != undefined) { - this.showOverlay(params.overlayTime); + if (this.config['markers'][element].overlayTime != undefined) { + this.showOverlay(this.config['markers'][element].overlayTime); } // Query parameters @@ -124,17 +101,17 @@ function gmapArcgis(config) { returnGeometry: true, // TODO //queryGeometry: bounds, - where: (params.where != undefined) ? params.where : '1=1', - outFields: params.fields, + where: (this.config['markers'][element].where != undefined) ? this.config['markers'][element].where : '1=1', + outFields: this.config['markers'][element].fields, }; - var layer = new gmaps.ags.Layer(params.uri); + var layer = new gmaps.ags.Layer(this.config['markers'][element].uri); // Execute query layer.query(query, processResultSet); // Configure infoWindow - params.infowindow = new google.maps.InfoWindow({ + this.config['markers'][element].infowindow = new google.maps.InfoWindow({ content: '', }); @@ -144,19 +121,19 @@ function gmapArcgis(config) { for (var i = 0, c = fs.length; i < c; i++) { fset = fs[i]; - params.overlay[i] = {}; - params.overlay[i].marker = new google.maps.Marker({ - title: (params.title != undefined) ? fset.attributes[params.title] : fset.attributes.nome, - icon: params.icon, + this.config['markers'][element].overlay[i] = {}; + this.config['markers'][element].overlay[i].marker = new google.maps.Marker({ + title: (this.config['markers'][element].title != undefined) ? fset.attributes[this.config['markers'][element].title] : fset.attributes.nome, + icon: this.config['markers'][element].icon, position: fset.geometry[0].getPosition(), map: map, }); // Use a closure so marker data remains available to the listeners - params.overlay[i].addListener = function() { - var marker = params.overlay[i].marker; - var infowindow = params.infowindow; - var content = params.content; + this.config['markers'][element].overlay[i].addListener = function() { + var marker = this.config['markers'][element].overlay[i].marker; + var infowindow = this.config['markers'][element].infowindow; + var content = this.config['markers'][element].content; var attributes = fset.attributes; google.maps.event.addListener(marker, 'click', function() { @@ -166,7 +143,7 @@ function gmapArcgis(config) { }; // Execute - params.overlay[i].addListener(); + this.config['markers'][element].overlay[i].addListener(); } this.unblockUI(); @@ -188,13 +165,13 @@ function gmapArcgis(config) { return; }, - toggleLayers: function(params) { - params.overlay.setOpacity(0); + toggleLayers: function(element) { + this.config['layers'][element].overlay.setOpacity(0); }, // Toggle marker visibility - toggleMarkers: function(params, raw) { - markers = (raw == true) ? params : params.overlay; + toggleMarkers: function(element, raw) { + markers = (raw == true) ? element : this.config['markers'][element].overlay; for (i=0; i < markers.length; i++) { if (markers[i].marker.getVisible()) { @@ -222,13 +199,13 @@ function gmapArcgis(config) { }, // Change a element in the map - changeElement: function(map, params, page, callback) { - if (config[params] == undefined || config[params]['showOn'] == undefined) { + changeElement: function(type, element, callback) { + if (this.config[type][element] == undefined || this.config[type][element]['showOn'] == undefined) { return; } - if (jQuery.inArray(page, config[params]['showOn']) != -1) { - this[callback](map, config[params]); + if (jQuery.inArray(this.config.mapName, this.config[type][element]['showOn']) != -1) { + this[callback](element); } }, @@ -265,5 +242,9 @@ function gmapArcgis(config) { }, + setMap: function(map) { + this.map = map; + }, + } }; |