- DPI
- Display Width
- Display Height
- View Center
- View Scale
Here's a neat little hack you can do
If you remember, I previously showed how you can actually replicate mapagent functionality through the MgHttpRequest and MgHttpResponse classes. Armed with this knowledge, the key to changing any of the above properties is to set up the appropriate operation and parameters for an API that's only available in the mapagent: GETDYNAMICMAPOVERLAYIMAGE
GETDYNAMICMAPOVERLAYIMAGE differs from what's in the official API (MgRenderingService::RenderDynamicOverlay()) in that the mapagent version supports these additional parameters:
- SETVIEWCENTERX
- SETVIEWCENTERY
- SETVIEWSCALE
- SETDISPLAYDPI
- SETDISPLAYWIDTH
- SETDISPLAYHEIGHT
- SHOWLAYERS
- HIDELAYERS
- SHOWGROUPS
- HIDEGROUPS
These parameters actually modify the state of the MgMap that is to be rendered. Through the use of MgHttpRequest and MgHttpResponse we can indirectly tap into this mapagent API to achieve the same result.
Now the operation itself returns a rendered image obviously, so if we want this to be snappy (as we just want to modify MgMap state and don't really care about the rendered result), you'd want to request something that requires very minimal processing overhead to produce the rendered image. So under these conditions, the ideal parameters to supply to GETDYNAMICMAPOVERLAYIMAGE are:
- BEHAVIOR = 1 (Selected features only)
- FORMAT=PNG8/JPG (Smallest image format in case we actually do have a rendered selection)
I've attached a PHP code sample that demonstrates this technique.
No comments:
Post a Comment