[Cartoweb-users] retrieve map coordinates with query tool

Oliver Christen oliver.christen at camptocamp.com
Fri Feb 9 04:33:06 EST 2007


Hi Valerio

you have two possibilities: 
extend the table plugin to output an extra variable to the template after a query. In this case the selection will appear once.
or use tableTrules, to add an extra column in the query result table, containing the selection coordinate.

Since the coordinates are the same for all the results, I think the first option is better, but feel free to experiment ^_^

option 1:

create a new plugin,
class ClientMyProjectTables extends ClientTables {    $coordinates;

    public function replacePlugin() {
        return 'tables';
    }

    public function handleHttpPostRequest($request) {      if (isset($request['selection_coords']) {          $this->coordinates = $request['selection_coords'];      }    }        protected function renderFormPrepare() {                    $smarty = new Smarty_Plugin($this->getCartoclient(), $this);            $smarty->assign('tables', $this->tableGroups);            $smarty->assign('queryCoordinates', $this->coordinates);                    $this->assignExportCsv($smarty);                    return $smarty->fetch('tables.tpl');    }}and, if it is not already donw, overload the table template in your project (copy tables.tpl in /yourproject/coreplugins/tables/templates/) and add the new smarty variable inside {$queryCoordinates}

option 2:
to add extra info in a query result, you can use the tableRules system in cartoweb.

basically, it is a special kind of plugin that contain query result modifications
I have attached an exemple file, containing a basic modification (adding a html link in the query result table)

in the initialize() function, you define the type of action. In the exemple "addCellFilter" which will add new data in an extra cell in each row of the query result table . For a complet list of possible action, see: http://www.cartoweb.org/doc/cw3.3/xhtml/dev.newplugin.html#dev.newplugin.special.tables

public function addCellFilter($groupId, $tableId, $columnId,
                              $inputColumnIds, $callback)$groupId is usualy 'query', $tableId is the name of the layer queried, $columnId is the name of the column, $inputColumnIds is an array containing the IDs of the columns you want to have at disposal when applying modification, $callback is an array containing a reference to the current tableRule class and the function where the modification will be done.this modification function must be declared static public. It receive as parameters ($tableId, $columnId, $inputValues)$tableId and $columnId are the same as described above. $inputValues is an associative array containing the values of the selected columns you passed with $inputColumnIds.then you can simply generate the content of the new cell. For exemple recovering the selection coordinates as I told you in my last email.Regards
Oliver
  ----- Original Message ----- 
  From: Valerio Noti 
  To: Oliver Christen ; cartoweb-users at lists.maptools.org 
  Sent: Friday, February 09, 2007 9:53 AM
  Subject: Re: [Cartoweb-users] retrieve map coordinates with query tool


  Oliver,
  I added:

  if (isset($request['selection_coords']) {
      $this->coordinates = $request['selection_coords'];
  }

  in handleHttpPostRequest  in coreplugins/query/client/ClientQuery.php file (is the right file?)

  How can I call coordinates string from tables.tpl file if I want to display them with other query results?

  Thank you

  Valerio


  /*
  Valerio Noti
  valerionoti at yahoo.it
  */
    ----- Original Message ----- 
    From: Oliver Christen 
    To: Valerio Noti ; cartoweb-users at lists.maptools.org 
    Sent: Thursday, February 08, 2007 7:42 AM
    Subject: Re: [Cartoweb-users] retrieve map coordinates with query tool


    Hi Valerio,

    yes, each query return the coordinate of the point or selection on the map.
    you can retrieve the data from the handleHttpPostRequest ( or filterPostRequest, depending what you want to do with the values)
    the variable name is "selection_coords"

    for exemple, in handleHttpPostRequest :

    if (isset($request['selection_coords']) {
        $this->coordinates = $request['selection_coords'];
    }

    or in filterPostRequest :

    if ($request->getValue('selection_coords') && !empty($request->getValue('selection_coords'))) {
        this->coordinates = $request->getValue('selection_coords');
    }

    the coordinates are a string like this 'x,y' for point or 'xmin,ymin;xmax,ymax;...' for box

    regards
    Oliver
      ----- Original Message ----- 
      From: Valerio Noti 
      To: cartoweb-users at lists.maptools.org 
      Sent: Wednesday, February 07, 2007 3:23 PM
      Subject: [Cartoweb-users] retrieve map coordinates with query tool


      hello,
      is it possible to retrieve map coordinates where user clicked with query tool?

      Thanks in advance

      Valerio


      /*
      Valerio Noti
      valerionoti at yahoo.it
      */


--------------------------------------------------------------------------


      _______________________________________________
      Cartoweb-users mailing list
      Cartoweb-users at lists.maptools.org
      http://lists.maptools.org/mailman/listinfo/cartoweb-users



----------------------------------------------------------------------------


    No virus found in this incoming message.
    Checked by AVG Free Edition.
    Version: 7.5.432 / Virus Database: 268.17.29/673 - Release Date: 06/02/07 17.52
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/cartoweb-users/attachments/20070209/f0d874e8/attachment-0001.html


More information about the Cartoweb-users mailing list