First you need a function to build and return a map. These examples assume you have a module called "mymodule" and that function mymodule_getmap is a page callback in a menu item.

function mymodule_getmap() {

  // get the default settings as set up in admin/config/services/getlocations
  $mysettings = getlocations_defaults();
  // now we override the defaults with the settings for this instance
  // tell getlocations that this is an external map and give it a unique name
  $mysettings['extcontrol'] = 'mymodule';
  // set the map center
  $mysettings['latlong'] = "55.948627,-3.200336";
  // set the map dimensions
  $mysettings['width'] = "500px";
  $mysettings['height'] = "500px";
  $mysettings['zoom'] = 14;
  // some fancy stuff
  $mysettings['fullscreen'] = 1;
  $mysettings['streetview_show'] = 1;
  $mysettings['maptype'] = 'Map';
  $mysettings['visual_refresh'] = 1;

  // set up the getlocations javascript and get the map id
  $mapid = getlocations_setup_map($mysettings);

  // your module's js. Given extra weight to make sure it loads after getlocations.js
  $jsfile = drupal_get_path('module', 'mymodule') . '/mymodule.js';
  $js_opts = array();
  $js_opts['weight'] = $mysettings['getlocations_js_weight'] + 10;
  $js_opts['type'] = 'file';
  drupal_add_js($jsfile, $js_opts);

  // set up the CDATA
  $minmaxes = '';
  $latlons = array();
  getlocations_js_settings_do($mysettings, $latlons, $minmaxes, $mapid, FALSE, $mysettings['extcontrol']);

  // get the html for the map and whatever else, buttons etc
  $map = theme('getlocations_show', array(
    'width' => $mysettings['width'] ,
    'height' => $mysettings['height'] ,
    'defaults' => $mysettings,
    'mapid' => $mapid,
    'type' => '',
    'node' => '')
  );

  // set up and return the page
  $output = '<h3>test map</h3>';
  $output .= '<p>Zoom level<div id="mymodule_zoomlevel">14</div></p>';
  $output .= $map;

  return $output;
}

Here is an example of the javascript you might want to deploy:
Put it in mymodule.js

(function ($) {
  Drupal.behaviors.mymodule = {
    attach: function() {
      // first find the right map
      $.each(Drupal.settings.getlocations, function (key, settings) {
        // this is the one we want
        if (settings.extcontrol == 'mymodule') {

          // an event handler on map zoom
          google.maps.event.addListener(getlocations_map[key], 'zoom_changed', function() {
            // use jQuery to insert the zoomlevel into the DOM.
            $("#mymodule_zoomlevel").html(getlocations_map[key].getZoom());
          });

        }
      });
    }
  };
}(jQuery));

The javascript creates an event handler that prints out the zoom level whenever it changes.

This example uses getlocations.js to setup the markers so it would not use extcontrol.
You supply an array of node identifiers and whatever settings overrides you might want.
eg:

  $nids = array(2,3,5,9);
  $s = array();
  $s['behavior']['scale'] = 1;
  $s['trafficinfo'] = 1;
  $output = mymodule_nodemap_multiple($nids, $s);
  return $output;
function mymodule_nodemap_multiple($nids, $extra_settings = FALSE) {

  if (! is_array($nids) || empty($nids)) {
    return FALSE;
  }
  $entity_type = 'node';

  $mysettings = getlocations_defaults();
  if ($extra_settings) {
    $mysettings = getlocations_adjust_vars($mysettings, $extra_settings);
  }

  $latlons = array();
  $minmaxes = array('minlat' => 0, 'minlon' => 0, 'maxlat' => 0, 'maxlon' => 0);
  $count_locs = 0;
  $marker = $mysettings['node_map_marker'];
  $typemarkers = getlocations_get_markertypes($entity_type);

  foreach ($nids as $nid) {
    $node = node_load($nid);
    $locations = getlocations_load_locations($node->vid);
    if (isset($typemarkers[$node->type]) && $typemarkers[$node->type]) {
      $marker = $typemarkers[$node->type];
    }
    if (count($locations)) {
      // we should loop over them and dump bummers with no lat/lon
      foreach ($locations AS $key => $location) {
        if ($latlon = getlocations_latlon_check($location['latitude'] . ',' . $location['longitude'])) {
          $ll = explode(',', $latlon);
          $location['latitude'] = $ll[0];
          $location['longitude'] = $ll[1];
          $minmaxes = getlocations_do_minmaxes($count_locs, $location, $minmaxes);
          if (! isset($location['key'])) {
            $location['key'] = '';
          }
          else {
            if ($location['key'] == 'nid') {
              $location['lid'] = $nid;
            }
            elseif ($location['key'] == 'vid') {
              $location['lid'] = $nid;
            }
          }

          // term markers
          $marker = getlocations_get_term_marker($nid, $marker);

          // per location marker
          if (isset($location['marker']) && ! empty($location['marker'])) {
            $marker = $location['marker'];
          }
          $name = htmlspecialchars_decode($location['name'] ? strip_tags($location['name']) : strip_tags($node->title), ENT_QUOTES);
          $latlons[] = array($location['latitude'], $location['longitude'], $location['lid'], $name, $marker, $location['key']);
        }
      }
      $count_locs++;
    }
  }
  if ($count_locs < 2) {
    $minmaxes = FALSE;
  }

  $mapid = getlocations_setup_map($mysettings);
  // your module's js.
  $jsfile = drupal_get_path('module', 'mymodule') . '/mymodule.js';
  $js_opts = array();
  $js_opts['weight'] = $mysettings['getlocations_js_weight'] + 10;
  $js_opts['type'] = 'file';
  drupal_add_js($jsfile, $js_opts);

  getlocations_js_settings_do($mysettings, $latlons, $minmaxes, $mapid);
  // you could replace the following with your own bespoke theme
  return theme('getlocations_show', array(
    'width' => $mysettings['width'],
    'height' => $mysettings['height'],
    'defaults' => $mysettings,
    'mapid' => $mapid,
    'type' => $entity_type,
    'node' => ''
  ));

}