aboutsummaryrefslogtreecommitdiff
path: root/gmap_arcgis.js
blob: a63003d67c9e28d1a5e2d72e115de9152784f637 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// $Id$

// Load Google Maps API
//google.load("maps", "3");

// Global variables
var map, mapExtension, gOverlays;

// Setup custom GMap Overlays (layers and labels)
function gmap_arcgis() {
  /**
   * Use a timer to make sure everything is loaded upon execution time.
   * See http://drupal.org/node/223613#comment-736303
   */
  setTimeout(function() {
    // Variables
    var polygons = new Array();
    var labels   = new Array();
    var fields   = new Array();
    var id       = 'auto1map';
    var content, label;
   
    // Get data from Drupal
    if (Drupal.settings.gmap_arcgis !== undefined) {
      // 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
    map = Drupal.gmap.getMap(id).map;

    gmapArcgisShowPolygons(Drupal.settings.gmap_arcgis.polygons);
    
  }, 5);
  //setTimeout(unblockUI, 10000);
}

// Show all defined polygons
function gmapArcgisShowPolygons(polygons) {
  for (j = 0; j < polygons.length; j++) {
    showPolygon(polygons[j]);
  }
}

// Hide all defined polygons
function gmapArcgisHidePolygons(polygons) {
  for (j = 0; j < polygons.length; j++) {
    polygons[j].overlay.setOpacity(0);
    unblockUI();
  }
}

// Add polygons from a given ArcGIS MapServer Layer
function showPolygon(polygon) {
  var defaultOpacity = 0.55;

  if (typeof polygon.overlay != 'undefined') {
    polygon.overlay.setOpacity(defaultOpacity);
    unblockUI();
    return;
  }

  uri    = polygon['base'] + polygon['service'];
  layers = polygon['layers'];

  polygon.overlay = new gmaps.ags.MapOverlay(uri, {
    exportOptions: {
        layerIds:    layers,
        layerOption: 'show',
    }
  });

  polygon.overlay.setMap(map);
  polygon.overlay.setOpacity(defaultOpacity);

  // TODO
  return;
  GEvent.addListener(polygon.overlay, "load", showPolygonCallback);
  GEvent.addListener(polygon.overlay, "update", function() { unblockUI(); });
}

// Callback for showPolygon
function showPolygonCallback(mapservicelayer, error) {
  map.addOverlay(mapservicelayer);
  setTimeout(unblockUI, 6000);
}

// Add custom marker
function createMarker(point, name, html, icone) {
  var icon              = new GIcon();
  icon.image            = icone;
  icon.shadow           = "http://maps.google.com/mapfiles/ms/micons/msmarker.shadow.png";
  icon.iconSize         = new GSize(20, 20);
  icon.shadowSize       = new GSize(22, 20);
  icon.iconAnchor       = new GPoint(6, 20);
  icon.infoWindowAnchor = new GPoint(5, 1);

  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });
  return marker;
}

function unblockUI() {
  $.unblockUI();
}

// Add map overlays
$(document).ready(function() {
  google.setOnLoadCallback(gmap_arcgis);
  $('#edit-lista-uc').change(function() {
      oelem = $("option:selected", this).val();
      marcador = Drupal.gmap.getMap('auto1map').vars.markers[oelem];
      GEvent.trigger(marcador.marker,"click");
      $('#header').hide();
      $('#nav').hide();
  });
});