| 1 | |
| 2 | = !MapGuide RFC 181 - OpenLayers preview for WMS layers and development HTTP server = |
| 3 | |
| 4 | This page contains a change request (RFC) for the !MapGuide Open Source project. |
| 5 | More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. |
| 6 | |
| 7 | == Status == |
| 8 | |
| 9 | ||RFC Template Version||(1.0)|| |
| 10 | ||Submission Date|||| |
| 11 | ||Last Modified|||| |
| 12 | ||Author||Jackie Ng|| |
| 13 | ||RFC Status||draft|| |
| 14 | ||Implementation Status|||| |
| 15 | ||Proposed Milestone||4.0|| |
| 16 | ||Assigned PSC guide(s)||(when determined)|| |
| 17 | ||'''Voting History'''||(vote date)|| |
| 18 | ||+1|||| |
| 19 | ||+0|||| |
| 20 | ||-0|||| |
| 21 | ||-1|||| |
| 22 | ||no vote|| || |
| 23 | |
| 24 | == Overview == |
| 25 | |
| 26 | This RFC proposes to add a new OpenLayers HTML viewer representation for WMS responses and a new developmental HTTP server to simplify dev/testing of the MapGuide Web Tier. |
| 27 | |
| 28 | == Motivation == |
| 29 | |
| 30 | Currently, there is no built-in previewing mechanism for WMS layers in MapGuide. Right now, to preview a WMS layer from MapGuide requires an external WMS client like [https://qgis.org/en/site/ QGIS] or [http://www.thecarbonproject.com/Products/Gaia Gaia] to connect to the MapGuide WMS Service. |
| 31 | |
| 32 | Another tangential problem is that the development/testing of mapagent C++ code in the MapGuide Web Tier is severely hampered by the need to stand up a full-blown instance of Apache httpd or IIS in front of the mapagent binaries. Having a simple http server that integrates the mapagent handling code can rapidly improve development and iteration of mapagent functionality. |
| 33 | |
| 34 | == Proposed Solution == |
| 35 | |
| 36 | Add [https://github.com/yhirose/cpp-httplib cpp-httplib] to Oem. This is a MIT-licensed header-only C++11 library for easily implementing a HTTP web server. |
| 37 | |
| 38 | Add a new `MgDevHttpServer` to the `WebTier` project. This project is a simple console application using `cpp-httplib` that sets up a mapagent for testing/development purposes. This http server should not be used as a production or public-facing http server. |
| 39 | |
| 40 | Update our WMS templates to include a HTML template for WMS `GetMap` previews with OpenLayers. |
| 41 | |
| 42 | Update our WMS implementation to support a new `FORMAT` of `application/openlayers`. If this parameter value is supplied, an OpenLayers HTML preview of the given WMS layer is rendered instead of a map image. |
| 43 | |
| 44 | A testament to the speed at which the new OpenLayers WMS representation was implemented can be attributed to the use of the new `MgDevHttpServer` to rapidly speed up the developer inner loop |
| 45 | |
| 46 | == Implications == |
| 47 | |
| 48 | None. This is a new output format for an existing operation. |
| 49 | |
| 50 | == Test Plan == |
| 51 | |
| 52 | Verify `GetMap` requests produce an OpenLayers preview of the WMS layers if a `FORMAT` of `application/openlayers` is provided |
| 53 | |
| 54 | == Funding / Resources == |
| 55 | |
| 56 | Community |