Skip to content
Snippets Groups Projects
gmap.module 23.8 KiB
Newer Older
webgeer's avatar
webgeer committed
<?php
/* $Id$ */

/**
 * @file
 * GMap Filters is a module to include Google Map in a module
 *
 * GMap filter allows the insertion of a googlemap in a module.  It has
 * a page to creat a macro and then a filter to convet the macro into the
 * html and javascript code required to insert a google map.
 */


function gmap_help($section) {
  switch ($section) {
    case 'admin/modules#description':
      return t('Filter to allow insertion of a google map into a node');
    case 'admin/help#gmap':
      return t('<p>This is a module to allow creation and insertion of a google map into a node. ');

      break;
  }
}

function gmap_perm() {
  return array('create macro', 'override defaults');
}

/**
 *
 * Returns the html required to insert a map from a gmap associative array.
 *
 * @param $gmap
 * An associative array with the following variables set:
 *
 *  id - the id of the map every map on a page must have a unique id
 *  width - width of the map
 *  height - height of the map
 *  latlong - a string of the latitude and longitude of the centre of the map
 *  zoom - the zoom factor of the google map
 *  align - the alignment of the map 'right', 'left' or 'center'
 *  control - the control shown on the map 'Large', 'Small', or 'None'
 *  type - 'Map', 'Hybrid' or 'Satellite'
 *  points - a string of points to mark on the map with + between each point
 *
 *  Note: that this procedure does no security checking and will insert most of the strings into
 *        script and that this will be in a <script> block so it could be used to insert javascript
 *        into the page.  If the variables are set by users it is recommended that you use gmap_satitize() first.
 *
 * @return
 * A string with the google map ready to be inserted into a node.
 *
 */

function gmap_from_var ($gmap) {
    (!isset($gmap['width'])) ? $gmap['width']=variable_get('gmap_default_width', 300): NULL;
    (!isset($gmap['height'])) ? $gmap['height']=variable_get('gmap_default_height', 200):NULL;
    (!isset($gmap['latlong'])) ? $gmap['latlong']=variable_get('gmap_default_latlong', '-123.1, 49.2'):NULL;
    (!isset($gmap['zoom'])) ? $gmap['zoom']=variable_get('gmap_default_zoom', 7):NULL;
    (!isset($gmap['align'])) ? $gmap['align']='':NULL;
    (!isset($gmap['id'])) ? $gmap['id']='map':NULL;
    (!isset($gmap['control'])) ? $gmap['control']='Small':NULL;
    (!isset($gmap['type'])) ? $gmap['type']='Map':NULL;

    if (strlen($gmap['align'])>1) {
      $gmap['align']=' ALIGN="'.$gmap['align'].'"';
    }

    $outtext='<div id="'.$gmap['id'].'" style="width: '.$gmap['width'].'px; height: '.$gmap['height'].'px"'.$gmap['align'].'></div>
              <style type="text/css">
                 v\:* {
                   behavior:url(#default#VML);
                 }
              </style>
              <script type="text/javascript">
              //<![CDATA[
              gmap_torun.push(\'gmap_load_'.$gmap['id'].'();\');
              function gmap_load_'.$gmap['id'].'() {
                var '.$gmap['id'].' = new GMap(document.getElementById("'.$gmap['id'].'"));
                 '.$gmap['id'].'.centerAndZoom(new GPoint('.$gmap['latlong'].'), '.$gmap['zoom'].');
                 ';
    switch (strtolower($gmap['control'])) {
      case 'small':
        $outtext .='var mycontrol=new GSmallMapControl();
                '.$gmap['id'].'.addControl(mycontrol);
                 ';
        break;
      case 'large':
      $outtext .='var mycontrol=new GLargeMapControl();
              '.$gmap['id'].'.addControl(mycontrol);
              ';
    }
              

    $outext .= $gmap['id'].'.centerAndZoom(new GPoint('.$gmap['latlong'].'), '.$gmap['zoom'].');';
    if (isset($gmap['points'])) {
      $points = explode('+',$gmap['points']);
      foreach ($points as $value) {
        $outtext .="\n".$gmap['id'].'.addOverlay(new GMarker(new GPoint('.$value.')));';
      }
    }
    if (isset($gmap['line1'])) {
      $line1 = explode('+',$gmap['line1']);
      $line1txt ='';
      foreach ($line1 as $value) {
        if (strlen($line1txt)>0) {
          $line1txt .= ', ';
        }
        $line1txt .="new GPoint($value)";
      }
webgeer's avatar
webgeer committed
      $outtext .="\n".$gmap['id'].".addOverlay(new GPolyline([$line1txt],'".variable_get('gmap_default_line1_color', '#00cc00')."',5));";
webgeer's avatar
webgeer committed
    }
    if (isset($gmap['line2'])) {
      $line2 = explode('+',$gmap['line2']);
      $line2txt ='';
      foreach ($line2 as $value) {
        if (strlen($line2txt)>0) {
          $line2txt .= ', ';
        }
        $line2txt .="new GPoint($value)";
      }
webgeer's avatar
webgeer committed
      $outtext .="\n".$gmap['id'].".addOverlay(new GPolyline([$line2txt],'".variable_get('gmap_default_line2_color', '#ff0000')."',5));";
webgeer's avatar
webgeer committed
    }
    if (isset($gmap['line3'])) {
      $line3 = explode('+',$gmap['line3']);
      $line3txt ='';
      foreach ($line3 as $value) {
        if (strlen($line3txt)>0) {
          $line3txt .= ', ';
        }
        $line3txt .="new GPoint($value)";
      }
webgeer's avatar
webgeer committed
      $outtext .="\n".$gmap['id'].".addOverlay(new GPolyline([$line3txt],'".variable_get('gmap_default_line3_color', '#0000ff')."',5));";
webgeer's avatar
webgeer committed
    }
    $outtext .="\n } \n".'  //]]>
               </script>';
               
    return $outtext;
}

/**
 *
 * Cleans the gmap variables to prevent javascript interjection
 *
 * @param $gmap
 * A Gmap variable
 *
 * @return
 * A GMap variable with any dangerous text removed
 *
 */

function gmap_sanitize($gmap){
  //sanitizes the gmap variables to reduce the possibility of javascript inserts
  foreach ($gmap as $key=>$value) {
    if ($key='id') {
      preg_match('([a-zA-Z1-9_-]*)', $value,$out);
      $value=$out[0];
    }
    else {
      $value=str_replace(';','',$value);
    }
  }
  return $gmap;
}

/**
 *
 * Returns the html required to insert a map from a gmap associative array.
 *
 * @param $instring
 * A string with the settings of gmap insertion in the format var=setting|var2=setting2
 *  The possible variables are
 *  id - the id of the map every map on a page must have a unique id
 *  width - width of the map
 *  height - height of the map
 *  latlong - a string of the latitude and longitude of the centre of the map
 *  zoom - the zoom factor of the google map
 *  align - the alignment of the map 'right', 'left' or 'center'
 *  control - the control shown on the map 'Large', 'Small', or 'None'
 *  type - 'Map', 'Hybrid' or 'Satellite'
 *  points - a string of points to mark on the map with + between each point
 *
 * @return
 * A string with the google map ready to be inserted into a node.
 *
 */

function gmap_from_text($instring) {
  $statements=explode('|', $instring);
  $j=0;
  while (isset($statements[$j])) {
    $t=explode('=', $statements[$j],2);
    $gmap[trim($t[0])] = trim($t[1]);
    $j++;
  }
  $gmap=gmap_sanitize($gmap);
  $outtext = gmap_from_var($gmap);
//  $outtext .= "\nIn gmap_from_text ($instring)\n". print_r($gmap,true);
  return $outtext;
}

function _gmap_prepare($intext) {
  $out=FALSE;
  $mapexp = '/\[gmap([^\[\]]+ )* \] /x';
  preg_match_all($mapexp, $intext, $matches);
  $i=0;

  while (isset($matches[1][$i])) {
    $out[0][$i] = $matches[0][$i];
    $out[1][$i] = gmap_from_text($matches[1][$i]);
    $i++;
  } // endwhile process macro
  return $out;
}

function gmap_filter($op, $delta = 0, $format = -1, $text = '') {
  switch ($op) {
    case 'list':
      return (array(0 => t('GMap filter')));
      break;

    case 'name':
      return t('Google map filter');
      break;

    case 'description':
      return t('converts a google map  macro into the html required for inserting a google map.');
      break;
      
    case 'process':
      $gmaps=_gmap_prepare($text);   //returns an array of $tables[0] = table macro $table[1]= table html
      if ($gmaps) {                    // there are table macros in this node
        return str_replace($gmaps[0], $gmaps[1], $text);
      }
      else {
        return $text;
      }
      break;

    case 'prepare':
      return $text;
      break;

  }
}

function gmap_filter_tips($delta, $format, $long = false) {
webgeer's avatar
webgeer committed
  return t('Insert Google Map macro. <a href="gmapmacro" target="_blank" >Create a macro</a>');
webgeer's avatar
webgeer committed
}

function gmap_menu($may_cache) {
  $items=array();

  if ($may_cache) {
   $items[] = array('path' => 'gmapmacro',
                    'title' => t('Create a Google Map Macro'),
                    'access' => user_access('create macro'),
                    'callback' => 'gmap_macro_page' );
  }
  if (!$may_cache) {
    $header_text="\n".'<script src="http://maps.google.com/maps?file=api&v=1&key='.variable_get('googlemap_api_key', 'abcdef').'" type="text/javascript"></script>
                 <script language="javascript">
                 //<![CDATA[
                 var gmap_torun= new Array();
                 // note: this is required due to a bug with IE
                   function gmap_onload() {
                     for (i=0; i < gmap_torun.length; i++) {
                        eval(gmap_torun[i]);
                     }
                   }
                  // ]]>
                 </script>'."\n";
    drupal_set_html_head($header_text);
  }
  return $items;
}

function gmap_onload() {
  return array('gmap_onload()');
}

function gmap_settings() {
  //note the same google api key variable name as in the googlemap module is used
  $output  = form_textfield(t('Google API Key'), 'googlemap_api_key', variable_get('googlemap_api_key', 'abcdef'), 30, 255, t('Your personal Googlemaps API key.  You must get this for each separate website at <a href="http://www.google.com/apis/maps/">Google Map API website</a>.'));
  $output .= form_textfield(t('Default width'), 'gmap_default_width', variable_get('gmap_default_width', 300), 30,4,t('The default width of a Google map.'));
  $output .= form_textfield(t('Default height'), 'gmap_default_height', variable_get('gmap_default_height', 200), 30,4,t('The default height of a Google map.'));
  $output .= form_textfield(t('Default center'), 'gmap_default_latlong', variable_get('gmap_default_latlong', '-123.1, 49.2'), 30,120,t('The default latitude, longitude of a Google map.'));
  $output .= form_textfield(t('Default zoom'), 'gmap_default_zoom', variable_get('gmap_default_zoom', 7), 30,2,t('The default zoom level of a Google map.'));
  $output .= form_select(t('Default Control type'), 'gmap_map_control', variable_get('gmap_default_control', 'Small'), array('None'=>t('None'), 'Small'=>t('Small'), 'Large'=>t('Large')),t('The default control type for the map.'));
  $output .= form_select(t('Default map type'), 'gmap_map_type', variable_get('gmap_default_type', 'Map'),array('Map'=>t('Map'), 'Hybrid'=>t('Hybrid'), 'Satellite'=>t('Satellite')),t('The default map type.'));
  $output .= form_textfield(t('Line1 color'), 'gmap_line1_color', variable_get('gmap_default_line1_color', '#00cc00'), 30,7);
  $output .= form_textfield(t('Line2 color'), 'gmap_line2_color', variable_get('gmap_default_line2_color', '#ff0000'), 30,7);
  $output .= form_textfield(t('Line3 color'), 'gmap_line3_color', variable_get('gmap_default_line3_color', '#0000ff'), 30,7);
webgeer's avatar
webgeer committed

  return $output;
}

/**
 *
 * Creates a page that has all of the javascript required for the macro-creation tool.
 *
 */

function gmap_macro_page() {
webgeer's avatar
webgeer committed

   $line_colour=array(1=>variable_get('gmap_default_line1_color', '#00cc00'), variable_get('gmap_default_line2_color', '#ff0000'),variable_get('gmap_default_line3_color', '#0000ff'));
webgeer's avatar
webgeer committed
  (isset($_REQUEST['width'])) ? $newwidth=$_REQUEST['width'] : $newwidth= variable_get('gmap_default_width', 300);
  (isset($_REQUEST['height'])) ? $newheight=$_REQUEST['height'] : $newheight= variable_get('gmap_default_height', 200);
  (isset($_REQUEST['latlong'])) ? $newlatlong=$_REQUEST['latlong'] : $newlatlong= variable_get('gmap_default_latlong', '-123.1, 49.2');
  (isset($_REQUEST['zoom'])) ? $newzoom=$_REQUEST['zoom'] : $newzoom= variable_get('gmap_default_zoom', 7);
  (isset($_REQUEST['control'])) ? $newcontrol=$_REQUEST['control'] : $newcontrol= variable_get('gmap_default_control', 'Small');
  $control=''; $small=''; $large='';
  $none= ($newcontrol=='None') ? 'SELECTED ' :'';
webgeer's avatar
webgeer committed
  $initiate = "//initiate variables\n";
webgeer's avatar
webgeer committed
  if ($newcontrol=='Small') {
    $small = 'SELECTED ';
webgeer's avatar
webgeer committed
    $initiate .=  "map.addControl(new GSmallMapControl());\n";
webgeer's avatar
webgeer committed
  }
  if ($newcontrol=='Large') {
    $large = 'SELECTED ';
webgeer's avatar
webgeer committed
    $initiate .=  "map.addControl(new GLargeMapControl());\n";
webgeer's avatar
webgeer committed
  for ($i=1; $i<=3; $i++) {
    if (isset($_REQUEST['point'.$i]) && strlen($_REQUEST['point'.$i])>0) {
      $newpoint[$i]=$_REQUEST['point'.$i];
      $initiate .= 'point'.$i.'overlay=new GMarker(new GPoint('.$_REQUEST['point'.$i].'));'."\n";
      $initiate .= 'map.addOverlay(point'.$i.'overlay);'."\n";
    }
    else {
      $newpoint[$i]='';
    }

    if (isset($_REQUEST['line'.$i]) && strlen($_REQUEST['line'.$i])>0) {
      $newline[$i]=$_REQUEST['line'.$i];
      $initiate .= 'line'.$i.'overlay = new GPolyline([new GPoint('.str_replace(' + ','), new GPoint(',$newline[$i]).')],"'.$line_colour[$i].'", 5);'."\n";
      $initiate .= 'map.addOverlay(line'.$i.'overlay);'."\n";
    }
    else {
      $newline[$i]='';
    }

webgeer's avatar
webgeer committed
  }

  $output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <title>GMap Macro Creator</title>
    <script src="http://maps.google.com/maps?file=api&v=1&key='.variable_get('googlemap_api_key', 'abcdef').'" type="text/javascript"></script>
    <style type="text/css">
      v\:* {
        behavior:url(#default#VML);
      }
webgeer's avatar
webgeer committed
      body {
        font-family: Helvetica, Arial, Lucida, Verdana, sans-serif;
      }
      h1 {
        font-size: 1.2em;
        font-weight: 700;
      }
webgeer's avatar
webgeer committed
    </style>
  </head>
  <body onload="makemacro(); gmapload();">
    <h1>GMap Macro creation tool</h1>
    <p>Using the controls on this page, set the map as to how you would like it to appear and then use the gmap macro filter to insert this
webgeer's avatar
webgeer committed
    into a node.  Select the contents of the macro form (by clicking on macro text field) and then copy and paste it into a node where the
    gmap filter has been enabled.
webgeer's avatar
webgeer committed
    <p><div id="map" style="width: '.$newwidth.'px; height: '.$newheight.'px"></div>
    <script type="text/javascript">
    //<![CDATA[

    function makemacro() {
      var zooml = \' |zoom=\' + document.gmapform.zoom.value;
      var center = \' |latlong=\' + document.gmapform.latlong.value;
      var width = \' |width=\' + document.gmapform.width.value;
      var height = \' |height=\' + document.gmapform.height.value;
      var id = \' |id=\' + document.gmapform.id.value;
      var control = \' |control=\' + document.gmapform.controltype.value;
      var type = \' |type=\' + document.gmapform.maptype.value;
      var alignment = \' |align=\' + document.gmapform.alignment.value;
      if (document.gmapform.point1.value.length >0) {var points = \' |points=\' + document.gmapform.point1.value} else points=\'\';
      if (document.gmapform.point2.value.length >0) {points += \' + \' + document.gmapform.point2.value};
      if (document.gmapform.point3.value.length >0) {points += \' + \' + document.gmapform.point3.value};
      if (document.gmapform.line1.value.length >0) {var line1 = \' |line1=\' + document.gmapform.line1.value} else line1=\'\';
      if (document.gmapform.line2.value.length >0) {var line2 = \' |line2=\' + document.gmapform.line2.value} else line2=\'\';
      if (document.gmapform.line3.value.length >0) {var line3 = \' |line3=\' + document.gmapform.line3.value} else line3=\'\';

      document.gmapform.macro.value = \'[gmap\' + id + center + zooml + width + height +  alignment + control + type + points + line1 + line2 + line3 + \']\';
    
    }
function mapat(instring) {
     var splitstring=instring.split(",");
     map.centerAtLatLng(new GPoint(splitstring[0],splitstring[1]));
}

function docontrol(incontrol) {
     map.removeControl(mycontrol);
     if (incontrol == "Small") map.addControl(mycontrol = new GSmallMapControl());
     if (incontrol == "Large") map.addControl(mycontrol = new GLargeMapControl());
     makemacro();
}

function changetype(intype) {
    if (intype == "Map") map.setMapType(G_MAP_TYPE);
    if (intype == "Hybrid") map.setMapType(G_HYBRID_TYPE);
    if (intype == "Satellite") map.setMapType(G_SATELLITE_TYPE);
    makemacro();
}
var map=null;
var mycontrol=null;
webgeer's avatar
webgeer committed
var point1overlay=null; var point2overlay=null; var point3overlay=null;
webgeer's avatar
webgeer committed
var line1overlay=null;  var line1points=new Array(); var line1string=new String();
var line2overlay=null;  var line2points=new Array(); var line2string=new String();
var line3overlay=null;  var line3points=new Array(); var line3string=new String();

    function gmapload() {
      if (GBrowserIsCompatible()) {
        map = new GMap(document.getElementById("map"));

webgeer's avatar
webgeer committed
        map.centerAndZoom(new GPoint('.$newlatlong.'), '.$newzoom.');
       '.$initiate.'
       
       
webgeer's avatar
webgeer committed
        GEvent.addListener(map, "moveend", function() {
          var center = map.getCenterLatLng();
          var latLngStr = center.x + \', \' + center.y ;
          document.gmapform.latlong.value = latLngStr;
          makemacro();
        });

        GEvent.addListener(map, "zoom", function() {
          var zooml = map.getZoomLevel();
          document.gmapform.zoom.value = zooml;
          document.gmapform.latlong.value = latLngStr;
          makemacro();
        });


        GEvent.addListener(map, \'click\', function(overlay, point) {

          if (overlay) {
webgeer's avatar
webgeer committed
            if (overlay==point1overlay) {
              point1overlay=point2overlay;
              point2overlay=point3overlay;
              point3overlay=null;
webgeer's avatar
webgeer committed
              document.gmapform.point1.value=document.gmapform.point2.value;
              document.gmapform.point2.value=document.gmapform.point3.value;
              document.gmapform.point3.value=\'\';
            }
webgeer's avatar
webgeer committed
            if (overlay==point2overlay) {
              point2overlay=point3overlay;
              point3overlay=null;
webgeer's avatar
webgeer committed
              document.gmapform.point2.value=document.gmapform.point3.value;
              document.gmapform.point3.value=\'\';
            }
        
webgeer's avatar
webgeer committed
            if (overlay==point3overlay) {
              point3overlay=null;
webgeer's avatar
webgeer committed
              document.gmapform.point3.value=\'\';
            }
            map.removeOverlay(overlay);
          }
          else if (point) {
            if (document.gmapform.clicktype.value==\'Points\') {
              map.addOverlay(marker=new GMarker(point));
webgeer's avatar
webgeer committed
              if (point2overlay) {
                if (point3overlay!=false) {
                  map.removeOverlay(point3overlay);
webgeer's avatar
webgeer committed
                }
webgeer's avatar
webgeer committed
                point3overlay=point2overlay;
webgeer's avatar
webgeer committed
                document.gmapform.point3.value=document.gmapform.point2.value;
              }
webgeer's avatar
webgeer committed
              if (point1overlay) {
                point2overlay=point1overlay;
webgeer's avatar
webgeer committed
                document.gmapform.point2.value=document.gmapform.point1.value
              }
webgeer's avatar
webgeer committed
              point1overlay = marker;
webgeer's avatar
webgeer committed
              document.gmapform.point1.value=point.x + \',\' + point.y ;
            }
            else if (document.gmapform.clicktype.value==\'Line1\') {
              line1points.push(point);
              if (line1overlay) map.removeOverlay(line1overlay);
webgeer's avatar
webgeer committed
              line1overlay=new GPolyline(line1points,"'.$line_colour[1].'", 5);
webgeer's avatar
webgeer committed
              map.addOverlay(line1overlay);
              if (line1string.length > 0) line1string += \' + \';
              line1string += point.x + \',\' + point.y;
              document.gmapform.line1.value = line1string;
            }
            else if (document.gmapform.clicktype.value==\'Line2\') {
              line2points.push(point);
              if (line2overlay) map.removeOverlay(line2overlay);
webgeer's avatar
webgeer committed
              line2overlay=new GPolyline(line2points,"'.$line_colour[2].'", 5);
webgeer's avatar
webgeer committed
              map.addOverlay(line2overlay);
              if (line2string.length > 0) line2string += \' + \';
              line2string += point.x + \',\' + point.y;
              document.gmapform.line2.value = line2string;
            }
            else if (document.gmapform.clicktype.value==\'Line3\') {
              line3points.push(point);
              if (line3overlay) map.removeOverlay(line3overlay);
webgeer's avatar
webgeer committed
              line3overlay=new GPolyline(line3points,"'.$line_colour[3].'", 5);
webgeer's avatar
webgeer committed
              map.addOverlay(line3overlay);
              if (line3string.length > 0) line3string += \' + \';
              line3string += point.x + \',\' + point.y;
              document.gmapform.line3.value = line3string;
            }

          }
          makemacro();
        });
      }
    }
    //]]>
    </script>

    <form action="gmapmacro" name="gmapform" method="post">
    <table>
webgeer's avatar
webgeer committed
      <tr><td><a title="When multiple maps are to be shown on the same page, each one must have a unique id.">ID:</a></td><td><input type="text" size="25" name="id" value="map"  onchange="makemacro(); " />
webgeer's avatar
webgeer committed
          <td>Map type:</td><td><SELECT NAME="maptype" onchange="changetype(document.gmapform.maptype.value);">
                                  <OPTION VALUE="Map" />Map
                                  <OPTION VALUE="Hybrid" />Hybrid
                                  <OPTION VALUE="Satellite" />Satellite
                                </SELECT> </td> </tr>
      <tr><td>Lat,Long:</td><td colspan=3><input type="text" size="50" name="latlong" value="'.$newlatlong.'" onchange="mapat(document.gmapform.latlong.value); " />  </td>
webgeer's avatar
webgeer committed
      <tr><td><a title="Map size, page must be reloaded to change map size">Width:</a></td><td><input type="text" size="25" name="width" value="'.$newwidth.'" /></td>
webgeer's avatar
webgeer committed
          <td>Alignment:</td><td><SELECT NAME="alignment" onchange="makemacro();">
                                  <OPTION VALUE="None" />None
                                  <OPTION VALUE="Right" />Right
                                  <OPTION VALUE="Left" />Left
                                  <OPTION VALUE="Center" />Center
                                </SELECT></td></tr>

webgeer's avatar
webgeer committed
      <tr><td><a title="Map size, page must be reloaded to change map size">Height:</a></td><td><input type="text" size="25" name="height" value="'.$newheight.'" />  </td>
webgeer's avatar
webgeer committed
          <td>Controls:</td><td><SELECT NAME="controltype" onchange="docontrol(document.gmapform.controltype.value);">
                                  <OPTION VALUE="None" '.$none.'/>None
                                  <OPTION VALUE="Small" '.$small.'/>Small
                                  <OPTION VALUE="Large" '.$large.'/>Large
                                </SELECT>

webgeer's avatar
webgeer committed
      <tr><td><a title="What happens when you click on the map">Click type:</a></td><td><SELECT NAME="clicktype" >
                                  <OPTION VALUE="Points" TITLE="Add Marker to map"/>Points
webgeer's avatar
webgeer committed
                                  <OPTION VALUE="Line1" />Line1
                                  <OPTION VALUE="Line2" />Line2
                                  <OPTION VALUE="Line3" />Line3
webgeer's avatar
webgeer committed
                                </SELECT> </td>
          <td><a title="The current magnification of the map">Magnification:</a></td><td><input type="text" size="5" name="zoom" value="'.$newzoom.'"  onchange="map.zoomTo(document.gmapform.zoom.value); " />  </td></tr>
webgeer's avatar
webgeer committed

webgeer's avatar
webgeer committed
      <!-- tr><td>point1:</td><td colspan=3 --><input type="hidden" size="50" name="point1" value="'.$newpoint[1].'" /><!-- /td>
      <tr><td>point2:</td><td colspan=3 --><input type="hidden" size="50" name="point2" value="'.$newpoint[2].'" />  <!-- /td>
      <tr><td>point3:</td><td colspan=3 --><input type="hidden" size="50" name="point3" value="'.$newpoint[3].'" />  <!-- /td>
      <tr><td>line1:</td><td colspan=3 --><input type="hidden" size="50" name="line1" value="'.$newline[1].'" />  <!-- /td>
      <tr><td>line2:</td><td colspan=3 --><input type="hidden" size="50" name="line2" value="'.$newline[2].'" />  <!-- /td>
      <tr><td>line3:</td><td colspan=3 --><input type="hidden" size="50" name="line3" value="'.$newline[3].'" />  <!-- /td-->
webgeer's avatar
webgeer committed

    </table>
webgeer's avatar
webgeer committed
    <textarea name="macro" cols="60" rows="10" onclick="document.gmapform.macro.select();">
webgeer's avatar
webgeer committed
    </textarea>
webgeer's avatar
webgeer committed
    <p><INPUT type="submit" value="Reload to resize map" title="Only reload to resize map, some settings may be lost"></p>
webgeer's avatar
webgeer committed
    </form>
  </body>
</html> ';
  print $output;
}

?>