');
// 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
-
Data inĂcio: $inicio
- Data fim $fim
";
$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') .
'';
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;
}