[mapguide-users] flexible web layouts

GordonL gordon.luckett at arrowgeomatics.com
Mon Jun 1 17:09:56 EDT 2009


HI Jason,
I did tweak the coordinate system here and have it working.
Look at:
http://squamish2010.ca/mapguide2010/contaminants/main_fusion.php

However, I am not sure how to convert such client-side javascript to produce
a printable map with the OpenLayers?   

Any hints?

thanks
gordon




Jason Birch wrote:
> 
> Hi,
> 
> Thanks for pointing out the example.
> 
> I had the same lack of success getting Google Maps to show up by using the
> methods outlined on DMSG's research blog.  It looked like I had everything
> right, but neither map would load.  I'd put it on a back burner until I
> had more time to play with it.
> 
> On the MGE site, they take a different path.  The ApplicationDefinition
> only contains the definition of a MapGuide map--which has been set to the
> Google Maps (Popular Visualization) and projects the underlying data on
> the fly--and InvokeScript widgets  that allow switching between streets,
> satellites, hybrid.  The real magic is in the HTML template.  There are
> three important things here:
> 
> - The Google Maps js is included at the top of the script
> 
> - The fusionInitialized callback registers addGoogleStuff() to be called
> when the map is loaded
> 
> - The addGoogleStuff() callback adds the google streets layer, sets the
> MapGuide layer to not be a base layer, turns off fractional zoom, and sets
> the google streets layer as the base layer.
> 
> The only really hard part of this (once it's figured out) appears to be
> setting the MapDefinition to use the Popular Visualisation projection and
> setting the extents.  You can grab the CS definition from the $wktGoogle
> variable in the attached script, and manually edit your MapDefinition's
> XML to use this as the CoordinateSystem.  Make sure to convert your " to
> " .  You can also extract the extents of an existing layer in the
> Popular Visualization projection using the attached script; just edit the
> first couple lines to point to the location of your WebServerExtensions
> directory, and the resource ID of a layer that covers the entire extent of
> your area.
> 
> Jason
> 
> ________________________________
> From: girish kumar bv
> Sent: Sunday, April 19, 2009 11:08 AM
> Subject: [mapguide-users] re: flexible web layouts
> 
> Can anyone provide neccessary steps/procedure to integrate google maps
> with mapguide using flexible web layout. I tried through Application
> definition.xml but with no success
> 
> There is an example on http://enterprise.mapguide.com/landing/index.php
> 
> <?php
> 
> $featureResource = "Library://ParcelData.FeatureSource";
> 
> $installDir = 'C:/Program Files/OSGeo/MapGuide Web/';
> 
> $wktGoogle = 'PROJCS["Popular Visualisation CRS /
> Mercator",GEOGCS["Popular Visualisation
> CRS",DATUM["Popular_Visualisation_Datum",SPHEROID["Popular Visualisation
> Sphere",6378137,0,AUTHORITY["EPSG","7059"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6055"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4055"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],AUTHORITY["EPSG","3785"],AXIS["X",EAST],AXIS["Y",NORTH]]';
> $wktLL84 =
> 'GEOGCS["LL84",DATUM["WGS84",SPHEROID["WGS84",6378137.000,298.25722293]],PRIMEM["Greenwich",0],UNIT["Degree",0.01745329251994]]';
> 
> function getExtents($geom)
> {
> 
>     try
>     {
> 
>       $ll = $geom->GetLowerLeftCoordinate();
>       $ur = $geom->GetUpperRightCoordinate();
>       
>       return array (
>          'x1' => $ll->GetX(),
>          'y1' => $ll->GetY(),
>          'x2' => $ur->GetX(),
>          'y2' => $ur->GetY()
>          );
> 
>     }
>     catch (MgException $e) {
>       return NULL;
>     }
>     
> }
> 
> try
> {
> 
> require($installDir."/www/mapviewerphp/constants.php");
> 
> MgInitializeWebTier($installDir."www/webconfig.ini");
> 
> $agfReaderWriter = new MgAgfReaderWriter();
> $wktReaderWriter = new MgWktReaderWriter();
> 
> $csFactory = new MgCoordinateSystemFactory();
> 
> $csGoogle = $csFactory->Create($wktGoogle);
> $csLL84 = $csFactory->Create($wktLL84);
> 
> $user = new MgUserInformation("Anonymous", "");
> $siteConnection = new MgSiteConnection();
> $siteConnection->Open($user);
> 
> $featureService =
> $siteConnection->CreateService(MgServiceType::FeatureService);
> 
> $resourceID = new MgResourceIdentifier($featureResource);
> 
> $scReader = $featureService->GetSpatialContexts($resourceID,false);
> 
> $scReader->ReadNext();
> 
> $wktSourceCs = $scReader->GetCoordinateSystemWkt();
> $csSource = $csFactory->Create($wktSourceCs);
> 
> $extentBinary = $scReader->GetExtent();
> 
> $extentAgfSource = $agfReaderWriter->Read($extentBinary)->Envelope();
> 
> $extentAgfLL84 = $agfReaderWriter->Read($extentBinary,
> $csFactory->GetTransform($csSource,$csLL84))->Envelope();
> 
> $extentAgfGoogle = $agfReaderWriter->Read($extentBinary,
> $csFactory->GetTransform($csSource,$csGoogle))->Envelope();
> 
> header('Content-type: text/plain');
> 
> print "Feature Source:\r\n\r\n";
> print $featureResource;
> 
> print "\r\n\r\nSource Coordinates:\r\n\r\n";
> print_r(getExtents($extentAgfSource));
> 
> print "\r\n\r\nLL84 Coordinates:\r\n\r\n";
> print_r(getExtents($extentAgfLL84));
> 
> print "\r\n\r\nGoogle Coordinates:\r\n\r\n";
> print_r(getExtents($extentAgfGoogle));
> 
> }
> catch (MgException $e) {
>     echo "ERROR: " . $e->GetMessage() . "\n";
>     echo $e->GetDetails() . "\n";
>     echo $e->GetStackTrace() . "\n";
>     exit;
> }
> 
> ?>
> _______________________________________________
> 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/re%3A-flexible-web-layouts-tp2660073p3008639.html
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list