[mapguide-users] flexible web layouts

GordonL gordon.luckett at arrowgeomatics.com
Wed Aug 5 13:53:05 EDT 2009


Just to follow up.  I managed to do it: check out: 
http://squamish2010.ca/CONTAMINANTS/

I had to add 3 new links - Satellite, Hybrid and Streets:

How I managed to print:
1. When the page opens it grabs the session map name and gets the extents.
2. I set up a very basic OpenLayers map with the "controls: [new
OpenLayers.Control.KeyboardDefaults()]"
3. I use OpenLayers to add the google layer
3. I use OpenLayers to add the MapGuide layer
4. Onload I trigger a print() 

that's it.
It's fun using the OpenLayers map as a print for MapGuide...

gordon



GordonL wrote:
> 
> 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-tp2660073p3393801.html
Sent from the MapGuide Users mailing list archive at Nabble.com.


More information about the mapguide-users mailing list