[mapguide-users] MapGuide REST units for DWF scale using printLayout

Berg, James James.Berg at stantec.com
Tue Oct 7 07:30:09 PDT 2014


I figured it out. Posting my problems here tends to help me organize my thoughts and solve problems. Hope you don't mind.

The solution was from an old mapguide user post: http://osgeo-org.1560.x6.nabble.com/scale-bar-always-says-Meters-td4203151.html

I edited rest\app\controller\mappingservicecontroller.php. Look for the function GeneratePlot(). This function affects DWFs created from runtime maps. To change the scale units for DWFs created from the library you would have to edit GeneratePlotFromMapDefinition(). The source code is pretty similar in both. One gets the map from Session, the other gets it from Library:\\.

Find the lines:

if ($printLayoutStr != null) {
         $layoutRes = new MgResourceIdentifier($printLayoutStr);
         $layout = new MgLayout($layoutRes, $title, MgPageUnitsType::Inches);
}

This checks if you're your REST request includes the path to a printlayout resource in Library:\\.  If so, it creates an MgLayout object. The third parameter in the constructor is what we're concerned with.

The parameter appears to be a constant, so you would think that the units would be imperial to start with. According the post, the constant doesn't work properly and we can work around it by including the actual string: "US-English"

Now the code reads:

if ($printLayoutStr != null) {
         $layoutRes = new MgResourceIdentifier($printLayoutStr);
         $layout = new MgLayout($layoutRes, $title, "US-English");
}

If I could request a change to make this less confusing, it would be that the third parameter for the MgLayout object be dependent on some kind of global configuration so it doesn't need to be edited manually.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapguide-users/attachments/20141007/068ca378/attachment.html>


More information about the mapguide-users mailing list