Add a "Map" tab to Location-enabled nodes so the map can easily be viewed

EvanDonovan - June 25, 2009 - 20:37
Project:GMap Module
Version:6.x-1.1-rc1
Component:Code
Category:feature request
Priority:normal
Assigned:Unassigned
Status:active
Description

I think it would be good if the Gmap module provided a tab by default that showed the GMap for Location-enabled nodes. I have accomplished this by adding the following code to gmap.module. My apologies for the lack of patch - I need to find a way to make patches more easily or else I just don't get around to doing them in the middle of the work day.

Anyway, I added this code to the gmap_menu():

<?php
      $items
['node/%node/map'] = array(
   
'title' => 'Map',
   
'page callback' => 'gmap_node_map',
   
'page arguments' => array(1),
   
'access callback' => 'gmap_node_map_access',
   
'access arguments' => array(1),
   
'weight' => 2,
   
'type' => MENU_LOCAL_TASK
 
);
?>

And here's the page & access callbacks:

<?php
/* Page callback for node map tab */
function gmap_node_map(&$node) {
    if(
$node->location['latitude'] && $node->location['longitude']) {
           
drupal_set_title(t('Map: ') . check_plain($node->title));
               
$marker_words = "<h2>" . check_plain($node->field_volopp_org_name[0]['view']) . "</h2>";
               
$macro = "[id=map1 |center=" . $node->location['latitude'] . ", " . $node->location['longitude'] . " | markers=" . $node->location['latitude'] . ", " . $node->location['longitude'] . " | zoom=6 |width=300px |height=300px |align=None |control=Small |type=Map|tcontrol=on]";
               
$map = theme('gmap', array('#settings' => gmap_parse_macro($macro)));
               
$output = $map;
          }
    else {
   
$output = "Map not available.";
    }
    return
$output;
}

/* Access callback for location_node_map() */
function gmap_node_map_access(&$node) {
    if(
$node->location && user_access('access content')) {
        return
TRUE;
    }
    else {
        return
FALSE;
    }
}
?>

#1

a.a.egoroff - August 10, 2009 - 14:04

Thanks! Works for me:)

#2

thekayra - August 12, 2009 - 03:07

Combining CCK, Locations CCK and jQuery UI Tabs worked for me. Quite flexible I would say.

Only semi-serious problem that I had choose is the problem to show gMap in a hidden tab. A little search allowed me to find this solution (#3)

Kayra.

#3

EvanDonovan - August 12, 2009 - 15:26

I realized after I posted this code that there is a conflict with Feed API, if you have that installed. I would recommend using the name 'Show Map' and the path '/show-map' since Feed API owns '/map'.

 
 

Drupal is a registered trademark of Dries Buytaert.