I've been researching how to add markers to a drupal 7 gmap for more hours than I feel comfortable admitting. The reason I have to do it through a module and not views is because of client specifications that I won't go into here. The code below is what I have so far, everything I've found seems to point in this direction and it looks right to me. But when I go to the page, no markers show on the map. Can anyone help me out here?
function rrs_custom_menu() {
$items = array();
$items['search-by-towns'] = array(
'title' => 'Search by Towns',
'page callback' => 'search_by_towns',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
function search_by_towns() {
$query = "SELECT node.title AS node_title, location.lid AS location_lid, location.latitude AS gmap_lat, location.longitude AS gmap_lon, location.name as loc_name, location.street, location.city, location.province, location.postal_code, gmap_taxonomy_node.marker AS gmap_node_marker, taxonomy_term_data.tid AS tid, taxonomy_term_data.vid AS vid, gmap_taxonomy_term.marker AS marker
FROM
{node} node
LEFT JOIN {location_instance} location_instance ON node.vid = location_instance.vid
LEFT JOIN {location} location ON location_instance.lid = location.lid
LEFT JOIN {gmap_taxonomy_node} gmap_taxonomy_node ON node.vid = gmap_taxonomy_node.vid
INNER JOIN {taxonomy_index} taxonomy_index ON node.nid = taxonomy_index.nid
INNER JOIN {taxonomy_term_data} taxonomy_term_data ON taxonomy_index.tid = taxonomy_term_data.tid
LEFT JOIN {gmap_taxonomy_term} gmap_taxonomy_term ON taxonomy_term_data.tid = gmap_taxonomy_term.tid
WHERE (( (node.status = '1') AND (node.type IN ('listing', 'town')) AND (taxonomy_term_data.vid = '3') ))
ORDER BY tid desc";
$result = db_query($query);
$marker = array();
foreach ($result as $res) {
$text = '<div class="location vcard"> <div class="adr"> <span class="fn">'.$res->loc_name.'</span> <div class="street-address"> '.$res->street.' </div> <span class="locality">'.$res->city.'</span>, <span class="region">'.$res->province.'</span> <span class="postal-code">'.$res->postal_code.'</span> </div> <div class="map-link"> <div class="location map-link">See map: <a href="http://maps.google.com?q='.$res->gmap_lat.'+'.$res->gmap_lon.'">Google Maps</a></div> </div> </div>';
$marker[] = array(
'latitude' => $res->gmap_lat,
'longitude' => $res->gmap_lon,
'markername' => $res->marker,
'offset' => 0,
'text' => $text,
'opts' => array(
'title' => '',
'highlight' => 0,
'highlightcolor' => '#FF0000'
)
);
}
$map_array = array(
'id' => "auto1map", // id attribute for the map
'width' => "685px", // map width in pixels or %
'height' => "480px", // map height in pixels
'latitude' => '36.10237644873644', // map center latitude
'longitude' => '-80.8758544921875', // map center longitude
'zoom' => 8, // zoom level
'maptype' => "Map", // baselayer type
'controltype' => "Small" // size of map controls
);
$map_array['markers'] = $marker;
$output = theme('gmap', array(
'element' => array(
'#type' => 'gmap',
'#gmap_settings' => $map_array,
'#input' => FALSE,
'#theme' => 'gmap',
'#children' => '',
)
)
);
return $output;
}