geofield.devel_generate.inc 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * @file
  4. * Create random data to populate geofields.
  5. */
  6. /**
  7. * Implements hook_devel_generate().
  8. */
  9. function geofield_devel_generate($object, $field, $instance, $bundle) {
  10. if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_CUSTOM) {
  11. return devel_generate_multiple('_geofield_devel_generate', $object, $field, $instance, $bundle);
  12. }
  13. else {
  14. return _geofield_devel_generate($object, $field, $instance, $bundle);
  15. }
  16. }
  17. function _geofield_devel_generate($object, $field, $instance, $bundle) {
  18. include_once(drupal_get_path('module', 'geofield') . '/includes/GeoGenerator.php');
  19. $generator = new GeoGenerator(); // @TODO: Make this static.
  20. $input = array();
  21. // Depending on the widget, we should assume limits on what kind of data to generate.
  22. switch ($instance['widget']['type']) {
  23. case 'geofield_latlon':
  24. $input['geom'] = array();
  25. list($input['geom']['lon'], $input['geom']['lat']) = $generator->random_point();
  26. $input['input_format'] = GEOFIELD_INPUT_LAT_LON;
  27. break;
  28. case 'geofield_bounds':
  29. // Instead of calculating 4 separate points, calculate a center point and
  30. // distance from it.
  31. list($lon, $lat) = $generator->random_point();
  32. $lat_diff = $generator->dd_generate(2, 10) / 100;
  33. $lon_diff = $generator->dd_generate(2, 10) / 100;
  34. $input = array(
  35. 'left' => $lon - $lon_diff,
  36. 'right' => $lon + $lon_diff,
  37. 'top' => $lat - $lat_diff,
  38. 'bottom' => $lat + $lat_diff,
  39. 'input_format' => GEOFIELD_INPUT_BOUNDS,
  40. );
  41. break;
  42. default:
  43. $input = array(
  44. 'geom' => $generator->wkt_generate(),
  45. 'input_format' => GEOFIELD_INPUT_WKT,
  46. );
  47. }
  48. return $input;
  49. }