Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Mon 01 September 2008 21:51

Jean marie
Participant assidu
Lieu: Moissy Cramayel
Date d'inscription: 15 Feb 2007
Messages: 309
Site web

[Autodesk Mapguide Studio 2008/09 ] Fonction Appeller une URL

Bonjour à vous

dans Autodesk Mapguide Studio 2008/2009
il existe une fonction "Appeler une URL" .... Il est possible d'ajouter une clé de la sélection d'un objet graphique à l'URL
et c'est à ce niveau que je bloque
je voudrais si cela est possible et par hasard avoir un exemple de syntaxe sur l'URL pour pouvoir m'en inspirer
(voir capture )

merci à vous
cordialement Jean-Marie


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Thu 04 September 2008 12:04

poulet1212
Participant actif
Date d'inscription: 10 Apr 2007
Messages: 74

Re: [Autodesk Mapguide Studio 2008/09 ] Fonction Appeller une URL

Je n'ai pas mon site sous les yeux au moment où je répond, cependant j'ai beaucoup utilisé cette fonction.
l'url à donner est de type:
../../../../monChemin/monfichier.php
Sachant que ce chemin est évalué depuis le fichier .html de l'application, par exemple pour fusion ce sera:
www/fusion/templates/mapguide/slate/index.html, en remontant 4 fois dans l'arborescence comme dans mon exemple, on arriver dans le répertoire 'www'.

Maintenant en ce qui concerne les valeurs de la sélection acuelle: il y a cette variable $currentSelection, qui il me semble, n'est pas implémentée.
Pour retrouver la sélection, il faut plutôt utiliser la varible $_SESSION['selection_array'] dans ton script php.
C'est une représentation JSON de la sélection actuelle. Attention, avant d'appler une variable session, tu devra starter la session (Voir mon exemple plus bas).

Pour conclure, de manière générale, si tu veux savoir quelles valeurs sont transmises à ton script php, fais les apparaître de cette manière:

//variables de session:
   //A mettre au début du fichier php
   session_start();
   //puis afficher le contenu de la variable de session
   print_r($_SESSION);

//Variables get:
print_r($_GET);

//Variables post:
print_r($_POST);

//Variables Serveur:
print_r($_SERVER);

Que compte tu faire avec ces données de sélection au juste?

Hors ligne

 

#3 Fri 05 September 2008 22:30

Jean marie
Participant assidu
Lieu: Moissy Cramayel
Date d'inscription: 15 Feb 2007
Messages: 309
Site web

Re: [Autodesk Mapguide Studio 2008/09 ] Fonction Appeller une URL

Merci à toi pour ces précieuses informations

il est claire que je suis arrivé au bout de mes connaissances sur le sujet
je cherche un moyen de faire des fiches de consultation de données plus sympa
que la simple consultation dans MapGuide et  je pense que c'est une piste
( le principe de la fiche de consultation des objets dans la solution GEOMAP ....wink )

voir l'exemple suivant
[img]http://web-prevost.info/explorer/pour_geomap/Snap3.jpg[/img]

ou encore

[img]http://web-prevost.info/explorer/pour_geomap/Snap4.jpg[/img]

si vous avez envie de connaitre le couple terrible MapGuide et GEOMAP j'ai réalisé un petit diaporama sur le sujet
il explique le choix de la technologie , les solutions et aussi la petite ville de moissy-cramayel  et le Grand AutocadMap wink

et c'est ici
http://web-prevost.info/explorer/pour_g … techno.swf

et encore merci à toi
cordialement Jean-Marie

Dernière modification par Jean marie (Fri 05 September 2008 22:42)

Hors ligne

 

#4 Sun 30 November 2008 11:33

Jean marie
Participant assidu
Lieu: Moissy Cramayel
Date d'inscription: 15 Feb 2007
Messages: 309
Site web

Re: [Autodesk Mapguide Studio 2008/09 ] Fonction Appeller une URL

bonjour à vous

bien que je n'ai pas tester cela j'ai trouvé un lien qui explique comment utiliser la fonction "Appeler une URL"
dans Studio
désolé la traduction est made in google
http://translate.google.fr/translate?u= … p;ie=UTF-8

à étudier
jean marie

Hors ligne

 

#5 Fri 14 August 2009 17:22

Jean marie
Participant assidu
Lieu: Moissy Cramayel
Date d'inscription: 15 Feb 2007
Messages: 309
Site web

Re: [Autodesk Mapguide Studio 2008/09 ] Fonction Appeller une URL

bonjour à vous
vacances oblige me voila à nouveau sur ce sujet
comme le montre le post précédent, j'ai trouvé un script qui utilise le fonction  "Appeler une URL"
comme le montre la capture suivante
[img]http://www.calcad.com/MGOS/passData.gif[/img]
celui ci fait appel un fichier PassData.php ok ici j'arrive encore à suivre
voila son code

Code:

<html>
  <head>
    <title>Pass Data</title>
  </head>
  <body>
    <p>If you see nothing but this message, your MapGuide session has probably expired. Reload the map, close this window, and then try your report request again.</p>
<?php
  /* ########################################################################
  Copy this php script into your MGOS mapviewerphp folder, then set it as the
  URL to invoke. It needs up to seven variables passed to it from InvokeURL; 
    Selected           : this is $CurrentSelection from MapGuide Studio), 
    DesiredField       : the name of the field that you'd like to get  data 
                         from; it is case-sensitive and must match the field 
                         name in the layer definition,
    LayerName -        : the name of the layer that you want to get the data 
                         from, 
    URL -              : the url that this script will forward to, 
    DestinationKeyName : name of the field that you're getting data for; to 
                         match the field-name the target page is expecting 
                         to receive data in.
    Quotes             : true/false - include single-quote delimiters around
                         each data value? Useful for target pages that expect 
                         quoted values because the data stings may include 
                         commas.
    IsPost             : true/false - make this a POST request?
    Additional         : this can hold any other parameters that you'd like 
                         to send... these just get passed straight through 
                         to URL - avoid using quotes here, because Studio 
                         doesn't seems to like that).  

  Adapted from code posted by Andrew DeMerchant in the 
  users@mapguide.osgeo.org mailing list:
    Date: Fri, 30 Jun 2006 11:03:40 -0300
    From: Andrew DeMerchant <andrew.demerchant@gemtec.ca>
    To: users@mapguide.osgeo.org
    Message-ID: <44A52F3C.10803@gemtec.ca>
    Subject: Re: [mapguide-users] RE: Come get your Key IDs
  ########################################################################## */

  include 'constants.php';
  $configFilePath     = 'C:\\Program Files\\MapGuideOpenSource2.0\\WebServerExtensions\\www\\webconfig.ini';
  $mgSessionId        = ($_SERVER['REQUEST_METHOD'] == "POST")? $_POST['SESSION']: $_GET['SESSION'];
  $mapName            = ($_SERVER['REQUEST_METHOD'] == "POST")? $_POST['MAPNAME']: $_GET['MAPNAME'];
  $xmlSelectString    = urldecode(stripslashes($_REQUEST["Selected"]));
  $LayerName          = urldecode(stripslashes($_REQUEST["LayerName"]));
  $KeyName            = urldecode(stripslashes($_REQUEST["DesiredField"]));
  $DestinationKeyName = urldecode(stripslashes($_REQUEST["DestinationKeyName"]));
  $KeepQuotes         = urldecode(stripslashes($_REQUEST["Quotes"]));
  $IsPost             = urldecode(stripslashes($_REQUEST["IsPost"]));
  $ReportURL          = urldecode(stripslashes($_REQUEST["URL"]));
  $AdditionalData     = isset($_REQUEST["Additional"]) ? $_REQUEST["Additional"] : '';

  // Initialize the Web Extensions and connect to the Server using
  // the Web Extensions session identifier stored in PHP
  // session state.

  echo '    <!-- MG Session ID: '.$mgSessionId.' -->'.PHP_EOL;
  MgInitializeWebTier ($configFilePath);
  $userInfo        = new MgUserInformation($mgSessionId);
  $siteConnection  = new MgSiteConnection();
  $siteConnection->Open($userInfo);
  $resourceService = $siteConnection->CreateService(0);
  $featureService  = $siteConnection->CreateService(2);
  $queryOptions    = new MgFeatureQueryOptions();
  $map             = new MgMap();
  $map->Open($resourceService, $mapName);

  // Create the selection object by retrieving the current
  // selection from the map.

  $selection = new MgSelection($map,$xmlSelectString);
  $layers = $selection->GetLayers();

  if ($layers)
  {
    for ($i = 0; $i < $layers->GetCount(); $i++)
    {
      // Only check selected features in the requested layer.
      
      $layer = $layers->GetItem($i);
      if ($layer && $layer->GetName() == $LayerName)
      {
        // Create a filter containing the IDs of the selected
        // features on this layer

        $layerClassName = $layer->GetFeatureClassName();
        $selectionString = $selection->GenerateFilter($layer, $layerClassName);

        // Get the feature resource for the selected layer

        $layerFeatureId = $layer->GetFeatureSourceId();
        $layerFeatureResource = new MgResourceIdentifier($layerFeatureId);

        // Apply the filter to the feature resource for the
        // selected layer. This returns
        // an MgFeatureReader of all the selected features.

        $queryOptions->SetFilter($selectionString);
        try
        {
          $featureReader = $featureService->SelectFeatures($layerFeatureResource, $layerClassName, $queryOptions);
        } catch(MgException $e) {
          echo '    <pre class="DEBUG">'.$e->GetMessage().'</pre>';
          // echo '<pre class="DEBUG">'.$e->GetDetails().'</pre>';
          // echo '<pre class="DEBUG">'.$e->GetStackTrace().'</pre>';
        }

        // Process each item in the MgFeatureReader,
        // extracting the desired property value

        $val="'";
        if (!isset($featureReader))
        {
?>
    <p>ERROR: Unable to retrieve data from the map.</p>
<?php
        } else {
          while ($featureReader->ReadNext())
          {
            $val = $val.getPropertyValueFromFeatReader($featureReader, $KeyName)."','";
          }
          $val = substr($val, 0, strlen($val)-2);
          // echo '<pre class="debug">'.$val.'</pre>';
          // echo '<pre class="debug">'.$KeepQuotes.'</pre>';
          if ($KeepQuotes!='true')
          {
            $val = urlencode(str_replace("'", '', $val));
          }
          // echo '<pre class="debug">'.$ReportURL."?".$DestinationKeyName."=".$val."&".$AdditionalData.'</pre>';
          if ($IsPost == 'true') // create a form and submit it.
          {
?>
    <form action="<?php echo $ReportURL; ?>" method="POST">
      <input type="hidden" id="<?php echo $DestinationKeyName; ?>" name="<?php echo $DestinationKeyName; ?>" value="<?php echo $val; ?>">
<?php       // Don't forget to process any additional parameters
            if (strlen($AdditionalData) > 0)
            {
              //split the parameters into an array
              $moreParams = explode('&', $AdditionalData);
              foreach ($moreParams as $value)
              {
                $thisParam = explode('=', $value);
                $thisName  = $thisParam[0];
                $thisValue = $thisParam[1];
?>
      <input type="hidden" id="<?php echo $thisName; ?>" name="<?php echo $thisName; ?>" value="<?php echo $thisValue; ?>">
<?php
              }
            }
?>
      <input type="submit">
    </form>
    <p>Oops! The automatic JavaScript form submission didn't work. Activate the SUBMIT button to finish retrieving your report.</p>
    <script type="text/javascript">
      document.forms[0].submit();
    </script>
<?php
          } else { // send a GET request
            header("Location: ".$ReportURL."?".$DestinationKeyName."=".$val."&".$AdditionalData);
            exit;
          }
        }
      }
    }
      echo '    <p>No objects were selected from the '.$LayerName.' layer.</p>'.PHP_EOL;
  }
  else
  {
    echo '    <p>No selected layers.</p>'.PHP_EOL;
  }

function getPropertyValueFromFeatReader($featureReader, $propertyName)
{
  $propValue='UNKNOWN';
  $propertyType = $featureReader->GetPropertyType($propertyName);
  switch ($propertyType)
  {
    case MgPropertyType::Null :
      break;
    case MgPropertyType::Boolean :
      $temp = $featureReader->GetBoolean($propertyName);
      $propValue = printBoolean($temp);
      break;
    case MgPropertyType::Byte :
      $propValue = $featureReader->GetByte($propertyName);
      break;
    case MgPropertyType::DateTime :
      $temp = $featureReader->GetDateTime($propertyName);
      $propValue = printDateTime($temp);
      break;
    case MgPropertyType::Single :
      $propValue = $featureReader->GetSingle($propertyName);
      break;
    case MgPropertyType::Double :
      $propValue = $featureReader->GetDouble($propertyName);
      break;
    case MgPropertyType::Int16 :
      $propValue = $featureReader->GetInt16($propertyName);
      break;
    case MgPropertyType::Int32 :
      $propValue = $featureReader->GetInt32($propertyName);
      break;
    case MgPropertyType::Int64 :
      $propValue = $featureReader->GetInt64($propertyName);
      break;
    case MgPropertyType::String :
      $propValue = $featureReader->GetString($propertyName);
      break;
    default: $propValue = '';
  }
  return $propValue;
}
?>
  </body>
</html>

mais ce que je n'arrive pas à faire c'est le fichier test.php dans sa structure ( sachant que je suis novice en php)

avez vous une idée
merci à vous

Hors ligne

 

Pied de page des forums

Powered by FluxBB