使用Drupal,GMap和Location的覆盖率映射

时间:2010-12-11 20:24:35

标签: drupal-gmap

我在Drupal网站上使用GMaps,位置和用户位置模块。我想有一张地图可以显示我的用户的“覆盖范围”。覆盖半径存储在自定义内容类型中,并引用用户。

如何在地图上显示仅包含其覆盖圈的用户?在使用GMap宏时我看到了这样的显示类型,所以我认为可以这样使用GMaps。

我认为很可能这与GMap模块不支持开箱即用。无论如何,如果有人能指出我正确的方向,我会很高兴...

1 个答案:

答案 0 :(得分:0)

毕竟我在匈牙利社区的帮助下成功完成了这项工作。 (我很乐意链接原始帖子,但似乎已删除。)

基本上,“技巧”是用钩子制作一个小的自定义模块:

function MODULENAME_preprocess_gmap_view_gmap(&$vars) {
  if ( $vars['view']->name == "my_gmap_view" ) {
    $map_object = $vars['map_object'];
    $map_object['id'] = 'my_view_id';
    foreach ($vars['view']->result as $key => $row) {
      $shapes[$key]['type'] = 'circle';

      // we have a profile field for the radius, but it could be anything...
      $shapes[$key]['radius'] = $row->profile_values_profile_radius_value;

      // center the circles on the coord
      $shapes[$key]['center'][0] = $row->location_latitude;
      $shapes[$key]['center'][1]= $row->location_longitude;
    }

    // we don't need any markers, just the circles
    $map_object['markers'] = NULL;
    $map_object['shapes'] = $shapes;
    $vars['map'] = theme('gmap', array('#settings' => $map_object));
  }
}