[mapguide-users] Creating a static image problem
Jo Cook
j.cook at oxfordarch.co.uk
Thu Aug 13 09:15:36 EDT 2009
Hi Chris,
In the flash of revelation that you only get *after* you've posted to the
mailing list, I realised that I couldn't use the default createmapimage.php
file from the developers sample, because it didn't include the
MgResourceIdentifier("Library://Maps/Map1.MapDefinition") anywhere. Once I
included that, it worked just fine. All a learning experience...
Thanks
Jo
Chris Claydon wrote:
>
> At a first glance, it looks like you may need to save the map you've
> created so that it is actually written to the session repository.
>
> Chris.
>
> -----Original Message-----
> From: mapguide-users-bounces at lists.osgeo.org
> [mailto:mapguide-users-bounces at lists.osgeo.org] On Behalf Of Jo Cook
> Sent: Wednesday, August 12, 2009 9:40 AM
> To: mapguide-users at lists.osgeo.org
> Subject: [mapguide-users] Creating a static image problem
>
>
> Dear All,
>
> I am trying to implement the following:
> The user selects a property (for example) from a drop-down list and is
> taken
> to a page with more details, a thumbnail map of the location, and an
> option
> to click on a link and go to the main map, where the property will be
> zoomed
> and highlighted. The setup is MGOS 2.1 with apache and php.
>
> I have managed to implement the second part, opening the main map page,
> highlighting the property and zooming to it, with some judicious use of an
> example posted elsewhere on the forum.
>
> However, I'm stuck trying to implement the thumbnail image. I am using the
> property report example from the developers guide as my starting point,
> and
> using the same code that works for highlighting and zooming to create the
> selection for the rendering service. So what I want to do is send the
> parameters for the map, the scale, the coordinates etc, the selection and
> the session to the createmapimage.php file from the developers guide. That
> page fails with a resource not found error, pointing at the map resource
> (Session:19bacd00-6982-102c-8000-00142acfcbee_en_7F0000010AFC0AFB0AFA//Map1.Map).
>
> Here's the php for the file that sends off the selection:
>
> $args = ($_SERVER['REQUEST_METHOD'] == 'POST') ? $_POST : $_GET;
> $mapScale = 3000;
> $imageHeight = 300;
> $imageWidth = 300;
> $SMAlayer = 'Events';
> $SMAlocation = $args['PKEY'];
> try
> {
> if($SMAlayer && $SMAlocation) {
> $userInfo = new MgUserInformation("Anonymous", "");
> $siteConn = new MgSiteConnection();
> $siteConn->Open($userInfo);
> $site = new MgSite();
> $site->Open($userInfo);
> $sessionId = $site->CreateSession();
> $userInfo->SetMgSessionId($sessionId);
>
> $resourceSrvc =
> $siteConn->CreateService(MgServiceType::ResourceService);
> $map = new MgMap();
> $resId = new
> MgResourceIdentifier("Library://Maps/Map1.MapDefinition");
> $mapName = $resId->GetName();
> $map->Create($resourceSrvc, $resId, $mapName);
>
> $layers = $map->GetLayers();
> $selLayer = $layers->GetItem($SMAlayer);
> $featureResourceId = new
> MgResourceIdentifier($selLayer->GetFeatureSourceId());
> $featureClassName = $selLayer->GetFeatureClassName();
>
> $filter = "PKEY = $SMAlocation";
> echo $filter;
> $queryOptions = new MgFeatureQueryOptions();
> $queryOptions->SetFilter($filter);
>
> $featureSrvc =
> $siteConn->CreateService(MgServiceType::FeatureService);
> $featureReader = $featureSrvc->SelectFeatures($featureResourceId,
> $featureClassName, $queryOptions);
>
> $selection = new MgSelection($map);
> $selection->AddFeatures($selLayer, $featureReader, 1);
> $selectionXml = $selection->ToXml();
> print_r($selectionXml);
>
> //get the coordinates for javascript zoom
> $geometryReaderWriter = new MgAgfReaderWriter();
> $featureReader = $featureSrvc->SelectFeatures($featureResourceId,
> $featureClassName, $queryOptions);
> if($featureReader->ReadNext()) {
> $byteReader = $featureReader->GetGeometry("Geometry");
> $geometry = $geometryReaderWriter->Read($byteReader);
> $centerPoint = $geometry->GetCentroid();
> $mapCenterX = $centerPoint->GetCoordinate()->GetX();
> $mapCenterY = $centerPoint->GetCoordinate()->GetY();
> $sitecode = $featureReader->GetString('SITE_CODE');
> }
> }
> }
> catch (MgException $e)
> {
> echo '<p>' . $e->GetMessage() . '</p>';
> echo '<p>' . $e->GetDetails() . '</p>';
> }
> $selectionEncoded = urlencode($selectionXml);
> $imageUrl =
> "./devguide/custom_output/createmapimage.php?SESSION=$sessionId&SELECTION=$selectionEncoded&MAPNAME=$mapName&SCALE=$mapScale"
> .
>
> "&HEIGHT=$imageHeight&WIDTH=$imageWidth&CENTERX=$mapCenterX&CENTERY=$mapCenterY";
>
> ?>
>
> This correctly picks up the scale, the coordinates, the sitecode etc.
>
> createmapimage.php is un-modified from the base setup.
>
> I'm very new to this, so I'm stuck trying to figure out what is wrong with
> what I'm sending to createmapimage.php. If someone could help, I'd be very
> grateful!
>
> Thanks
>
> Jo
> --
> View this message in context:
> http://n2.nabble.com/Creating-a-static-image-problem-tp3431631p3431631.html
> Sent from the MapGuide Users mailing list archive at Nabble.com.
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>
>
--
View this message in context: http://n2.nabble.com/Creating-a-static-image-problem-tp3431631p3437880.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list