'); // Add ArcGIS js API drupal_set_html_head($script . 'src="http://serverapi.arcgisonline.com/jsapi/gmaps/?v=1.6">'); // Setup Map Id drupal_add_js(array('gmap_arcgis' => array('id' => $map['id'])), 'setting'); /** * Setup polygons and labels. Labels have the following format: * * $map['arcgis']['labels'] = array($layer1 [, $layer2 [,... $layerN]]); * * Where $layer is * * $layer = array($layer_uri, $fields, $content, $icon); * * Where $layer_uri is a MapService layer, $fields is an array with * a pair of layer fields to pass to the query, $content is a string * with the content to display for each marker and $icon is an array * with parameteres from a GIcon class * * $icon = array($shadow, $image, $info_size, $shadow_size, * $info_anchor, $info_window_anchor); * * For more info on the GIcon class, see * http://code.google.com/intl/pt-BR/apis/maps/documentation/reference.html#GIcon * * Example: * * $labels = array( * array("http://mapservice/layer1", array('id', 'name'), array( * NULL, 'http://path/to/icon.png', * array(20, 34), array(37, 34), array(9, 34), array(9, 2) * ) * ), * array("http://mapservice/layer2"), * ); */ /** * The code below provides titles on markers */ //if(is_array($map['markers'])) { // array_walk($map['markers'], 'add_title_on_marker'); //} if (isset($map['arcgis']['polygons'])) { drupal_add_js(array('gmap_arcgis' => array('polygons' => $map['arcgis']['polygons'])), 'setting'); } if (isset($map['arcgis']['labels'])) { drupal_add_js(array('gmap_arcgis' => array('labels' => $map['arcgis']['labels'])), 'setting'); } /* $map['markers'][] = array( 'latitude' => '-22.7559207', 'longitude' => '-48.1640625', 'markername' => 'Eventos', 'offset' => 0, 'text' => 'Um teste', 'opts' => array( 'title' => 'Teste de evento', 'nid' => 10853, 'category' => 'marker_uc', ), ); */ // print views_embed_view('eventos'); /* $my_content_view = views_get_view('eventos'); $my_content_view->build('default'); $my_content_view->execute('default'); $results = $my_content_view->result; foreach($results AS $r) { // Format the Body of the ballon $inicio = format_date($r->event_unix_event_start); $fim = format_date($r->event_unix_event_end); $body = '
'; $body .= "

$r->node_title

"; $body .= "

$r->node_revisions_body

"; $body .= '
'; $data['latitude'] = $r->location_latitude; $data['longitude'] = $r->location_longitude; $data['title'] = $r->node_title; $data['offset'] = 0; $data['nid'] = $r->nid; $data['body'] = $body; $data['category'] = 'marker_uc'; __addMarker(&$map, $data); } */ // Add custom js $gmap_arcgis_path = drupal_get_path('module', 'gmap_arcgis') . '/'; drupal_add_js($gmap_arcgis_path . 'gmap_arcgis.js'); //jquery_ui_add('ui.dialog'); jquery_ui_add('effects.fold'); jquery_ui_add('effects.explode'); jquery_ui_add('effects.core'); jquery_ui_add('ui.slider'); $path_ui_css = drupal_get_path('module', 'jquery_ui'); drupal_add_css($path_ui_css . '/jquery.ui/themes/default/ui.all.css'); drupal_add_js('showOverlay();', 'inline', 'footer'); } } } /** * Set the title of the marker; * @param array $marker */ function add_title_on_marker(&$marker) { if (!empty($marker['text'])) { $dom = new DOMDocument(); $dom->loadHTML($marker['text']); //$dom->preserveWhiteSpace = false; $divs = $dom->getElementsByTagName('div'); if ($divs) { foreach ($divs AS $div) { if ($div->getAttribute('id') === 'nid') { $x = node_load($div->nodeValue); $titulo = $x->field_categoria[0]['value'] . ' ' . $x->field_preposicao[0]['value'] . ' ' . $x->title; $marker['opts'] = array('title' => $titulo, 'nid' => $div->nodeValue, 'category' => 'marker_uc'); } } } } } /** * Wrapper to add custom markers on map. Need to be out somewhere * @param array marker */ function __addMarker(&$map, $data) { $map['markers'][] = array( 'latitude' => $data['latitude'], 'longitude' => $data['longitude'], 'markername' => $data['markername'], 'offset' => $data['offset'], 'text' => $data['body'], 'opts' => array( 'title' => $data['title'], 'nid' => $data['nid'], 'category' => $data['category'], ), ); } /** * Implementation of hook_block() */ function gmap_arcgis_block($op='list', $delta=0, $edit=array()) { global $map; switch ($op) { case 'list': $blocks[0]['info'] = t('Protected areas list'); return $blocks; case 'view': $blocks['subject'] = t('Protected areas list'); $blocks['content'] = drupal_get_form('uc_form') . '
X
'; return $blocks; case 'configure': case 'save': } } function gmap_arcgis_link_nota_tecnica() { // global $base_url; //$str = http://uc.socioambiental.org/quem-somos# return l(t('Sources'), 'quem-somos', array('fragment' => 'tabset-tab-3', 'external' => TRUE)); } /** * Implementation of hook_menu(). */ function gmap_arcgis_menu() { $items['gmap_arcgis/mapserver'] = array( 'title' => 'MapServer Proxy', 'description' => 'Caches requests to a MapServer', 'page callback' => 'gmap_arcgis_mapserver', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; } /** * Menu callback. * * Caches dynamic ArcGIS requests by ignoring the timestamp pattern. */ function gmap_arcgis_mapserver() { header('Content-Type: text/plain;charset=utf-8'); // The ArcGIS server URL. $base = 'http://gis2.socioambiental.org:8399/arcgis/rest/services/'; // The dynamic pattern we want to exclude. $pattern = '/_[0-9]*._callback/'; $dynamic = FALSE; $request = $_SERVER['QUERY_STRING']; $query = str_replace('q=gmap_arcgis/mapserver/', '', $request); $query = preg_replace('/&/', '?', $query, 1); $dest = $base . $query; $process = curl_init($dest); if (preg_match($pattern, $dest, $timestamp) == 1) { $dynamic = TRUE; $key = sha1(preg_replace($pattern, '', $dest)); } else { $key = sha1($dest); } $data = cache_get($key, 'cache_page'); if ($data == 0) { curl_setopt($process, CURLOPT_TIMEOUT, 30); curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE); $return = curl_exec($process); curl_close($process); cache_set($key, $return, 'cache_page', CACHE_TEMPORARY); } else { $return = $dynamic == TRUE ? preg_replace($pattern, $timestamp[0], $data->data) : $data->data; // Cache expiration. if ($data->created < time() - 3600) { cache_clear_all($key, 'cache_page'); } } echo $return; exit; }