// $Id$ // Load Google Maps API google.load("maps", "2.x"); // Global variables var map, mapExtension, gOverlays; // Setup custom ISA GMap Overlays (layers and labels) function gmap_arcgis() { // Fallback setting var fallback = 'http://mapserver.fqdn/rest/services/app/MapServer'; var polygons = [ fallback ]; var labels = [ fallback + '/2' ]; var fields = new Array(); var id = 'auto1map'; // Get data from Drupal if (Drupal.settings.gmap_arcgis !== undefined) { // Get array of polygons if (Drupal.settings.gmap_arcgis.polygons !== undefined) { polygons = Drupal.settings.gmap_arcgis.polygons; } // Get array of labels if (Drupal.settings.gmap_arcgis.labels !== undefined) { labels = Drupal.settings.gmap_arcgis.labels; } // Get Map Id if (Drupal.settings.gmap_arcgis.id !== undefined) { id = Drupal.settings.gmap_arcgis.id; } } // Get an existing GMap instance using Drupal GMap Module API // and add an ArcGIS extension to it map = Drupal.gmap.getMap(id).map; mapExtension = new esri.arcgis.gmaps.MapExtension(map); for each (var label in labels) { fields = ["id", "name"]; icon = new GIcon(G_DEFAULT_ICON); if (label[1] !== undefined) { // Set custom fields fields = [ label[1][0], label[1][1] ]; } if (label[2] !== undefined) { // Set label icons var info = label[2]; icon.shadow = info[0]; icon.image = info[1]; icon.infoSize = new GSize(info[2][0], info[2][1]); icon.shadowSize = new GSize(info[3][0], info[3][1]); icon.infoAnchor = new GPoint(info[4][0], info[4][1]); icon.infoWindowAnchor = new GPoint(info[5][0], info[5][1]); } GEvent.addListener(map, "moveend", function() { showLabels(label[0], fields, icon); }); showLabels(label[0], fields, icon); } for each (var polygon in polygons) { showPolygons(polygon); } } // Add labels from a given ArcGIS MapServer Layer function showLabels(label, fields, icon) { var bounds = map.getBounds(); var queryTask = new esri.arcgis.gmaps.QueryTask(label); var query = new esri.arcgis.gmaps.Query(); // clear gOverlays overlays and event listeners //mapExtension.removeFromMap(gOverlays); // set query parameters query.queryGeometry = bounds; query.returnGeometry = true; query.outFields = fields; // set the callback var callback = showLabelsCallback(icon); // execute query task queryTask.execute(query, false, callback); } // Callback for showLabels function showLabelsCallback(icon) { return function(fset) { // JS literal class esri.arcgis.gmaps.MarkerOptions // TODO: general default settings instead of custom ISA config var myMarkerOptions = { title:"{nome_uc}", icon:icon }; // JS literal class esri.arcgis.gmaps.OverlayOptions var overlayOptions = { markerOptions:myMarkerOptions }; // JS literal class esri.arcgis.gmaps.InfoWindowOptions without tabs var infoWindowOptions = { // TODO: general default settings instead of custom ISA config content:"