Я изучал, как добавить маркеры в карту drupal 7 больше часа, чем мне удобно. Причина, по которой я должен делать это через модуль, а не через представления, заключается в том, что я не буду вдаваться в подробности из-за спецификаций клиента. Приведенный ниже код - это то, что у меня есть, все, что я обнаружил, похоже, указывает в этом направлении, и мне это кажется правильным. Но когда я захожу на страницу, на карте не отображаются маркеры. Может ли кто-нибудь помочь мне здесь?
Это использует модуль gmaps для drupal 7, кстати.
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";
$javascript = drupal_add_js();
$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;
}