[[PageOutline]] This page is one of the !MapGuide Community CodeSamples. Visit the CodeSamples page to view more! == Dynamically setting initial map view and scale == The following script allows us to set the initial ''x'', ''y'' and ''scale'' attributes of a map using the MapGuide Ajax Viewer. It expects the values to be passed to the script as querystring parameters, e.g. http://localhost/mapguide/set_intial_view.php?x=507700&y=186000&scale=400000 It works by taking a copy of the ''WebLayout'' stored in the ''Library repository'' and changing the , and elements. The updated XML is written into the ''Session'' and is used as the target when the page is ultimately redirected. This code could easily be converted to C# (or whatever). == Things to note == - A side-effect of the code is that it facilitates anonymous connections - The parameter-checking could be made a little more robust *cough* - The ''$wl'' variable should be changed to reflect the relevant ''WebLayout'' identifier == The code == {{{ #!php One or more of the required arguments is missing."; exit; } $x = $_REQUEST["x"]; $y = $_REQUEST["y"]; $scale = $_REQUEST["scale"]; // // Usual initialisation step. // InitializeWebTier(); // // Obtain a new session ID for this anonymous user, use it to set up // a new site connection and use that to create a resource service. // $site = new MgSite(); $site->Open(new MgUserInformation("Anonymous", "")); $sessionId = $site->CreateSession(); $siteConnection = new MgSiteConnection(); $siteConnection->Open(new MgUserInformation($sessionId)); $resourceService = $siteConnection->CreateService(MgServiceType::ResourceService); // // Read the web layout into an XML DOM document object. // $wl = "Library://WebPID/WebPID_SDF_Static.WebLayout"; // TODO Constant! $wlResourceId = new MgResourceIdentifier($wl); $wlReader = $resourceService->GetResourceContent($wlResourceId); $wlXml = $wlReader->ToString(); $wlDomDoc = DOMDocument::loadXML($wlXml); // // Now, update the initial x, y and scale values with the desired values. // $nodeCenterX = $wlDomDoc->getElementsByTagName("CenterX")->item(0); $nodeCenterX->nodeValue = "$x"; $nodeCenterY = $wlDomDoc->getElementsByTagName("CenterY")->item(0); $nodeCenterY->nodeValue = "$y"; $nodeScale = $wlDomDoc->getElementsByTagName("Scale")->item(0); $nodeScale->nodeValue = "$scale"; // // Prepare the updated XML to be written out to the session. // $updatedXml = $wlDomDoc->saveXML(); $byteSource = new MgByteSource($updatedXml, strlen($updatedXml)); // // Create a web layout in the session to hold the updated version // from the library. // $sessionMapName = $wlResourceId->GetName(); $sessionWebLayout = "Session:$sessionId//$sessionMapName.WebLayout"; $sessionResourceId = new MgResourceIdentifier($sessionWebLayout); // // Write the updated web layout to the session. // $resourceService->SetResource($sessionResourceId, $byteSource->GetReader(), null); // // Redirect to the Ajax viewer pointing at the map at the desired coordinates. // $redirectTo = "mapguide/mapviewerajax/?SESSION=$sessionId&WEBLAYOUT=$sessionWebLayout"; $host = $_SERVER["HTTP_HOST"]; $url = "http://$host/$redirectTo"; // // Redirect! // header("Location: $url"); exit; ?> }}} == See also == * [wiki:CodeSamples/PHP/AddLayerToInitialMap Dynamically adding a layer to the initial map] * To reposition a MapGuide map at a given ''x'', ''y'' and ''scale'' using JavaScript, take a look at the ZoomToView() API function.