[mapguide-commits] r9686 - in sandbox/jng/ogc_viewer_representation: UnitTest/WebTier/MapAgent/MapAgentForms Web/src/HttpHandler

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Jul 24 06:11:36 PDT 2020


Author: jng
Date: 2020-07-24 06:11:35 -0700 (Fri, 24 Jul 2020)
New Revision: 9686

Modified:
   sandbox/jng/ogc_viewer_representation/UnitTest/WebTier/MapAgent/MapAgentForms/getmapwmsform.html
   sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/HttpWmsGetMap.cpp
   sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcFramework.h
   sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.cpp
   sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.h
   sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.cpp
   sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.h
Log:
Add application/openlayers mime type to WMS GetMap form. Implement content placeholder for the WMS handler

Modified: sandbox/jng/ogc_viewer_representation/UnitTest/WebTier/MapAgent/MapAgentForms/getmapwmsform.html
===================================================================
--- sandbox/jng/ogc_viewer_representation/UnitTest/WebTier/MapAgent/MapAgentForms/getmapwmsform.html	2020-07-24 11:10:57 UTC (rev 9685)
+++ sandbox/jng/ogc_viewer_representation/UnitTest/WebTier/MapAgent/MapAgentForms/getmapwmsform.html	2020-07-24 13:11:35 UTC (rev 9686)
@@ -17,6 +17,7 @@
 <option value="image/png">image/png</option>
 <option value="image/jpeg">image/jpeg</option>
 <option value="image/gif">image/gif</option>
+<option value="application/openlayers">application/openlayers</option>
 </select>
 <p> Layers (comma-separated):
 <input type="text" name="LAYERS" value="Samples/Sheboygan/Layers/Parcels,Samples/Sheboygan/Layers/Roads" size="100">

Modified: sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/HttpWmsGetMap.cpp
===================================================================
--- sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/HttpWmsGetMap.cpp	2020-07-24 11:10:57 UTC (rev 9685)
+++ sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/HttpWmsGetMap.cpp	2020-07-24 13:11:35 UTC (rev 9686)
@@ -168,42 +168,72 @@
     {
         if(wms.ProcessRequest(this))
         {
-            // Get an instance of the resource service
-            Ptr<MgResourceService> resourceService = (MgResourceService*)CreateService(MgServiceType::ResourceService);
-            // Get an instance of the resource service
-            Ptr<MgFeatureService> featureService = (MgFeatureService*)CreateService(MgServiceType::FeatureService);
+            // Get the image format
+            // Note: should be valid, since this mapping has already happened
+            // in the Validate phase.
+            STRING format;
+            wms.MapValue(kpszDefineSupportedFormats, m_format.c_str(), format);
 
-            // Get the background color
-            Ptr<MgColor> bkColor = MgWmsMapUtil::GetBackgroundColor(m_bgColor, m_transparent);
+            if (m_format == kpszOpenLayersMimeType)
+            {
+                // Construct a self url
+                auto selfUrl = m_hRequest->GetAgentUri();
+                for (INT32 i = 0; i < requestParams.Count(); i++)
+                {
+                    if (i == 0)
+                        selfUrl += L"?";
+                    else
+                        selfUrl += L"&";
 
-            // Get the extents
-            Ptr<MgEnvelope> extents = MgWmsMapUtil::GetExtents(m_bbox);
+                    auto name = requestParams.Name(i);
+                    selfUrl += name;
+                    selfUrl += L"=";
+                    if (name == MgHttpResourceStrings::reqWmsFormat)
+                    {
+                        selfUrl += L"image/png"; //TODO: Surely default image format is defined somewhere
+                    }
+                    else
+                    {
+                        auto value = (CPSZ)requestParams.Value(i);
+                        selfUrl += value;
+                    }
+                }
 
-            // Create session
-            Ptr<MgUserInformation> userInfo = m_siteConn->GetUserInfo();
-            site = m_siteConn->GetSite();
-            session = site->CreateSession();
-            userInfo->SetMgSessionId(session);
+                wms.OutputViewerResponse(selfUrl, hResult);
+            }
+            else
+            {
+                // Get an instance of the resource service
+                Ptr<MgResourceService> resourceService = (MgResourceService*)CreateService(MgServiceType::ResourceService);
+                // Get an instance of the resource service
+                Ptr<MgFeatureService> featureService = (MgFeatureService*)CreateService(MgServiceType::FeatureService);
 
-            // Get a map object corresponding to the request parameters
-            Ptr<MgMap> map = MgWmsMapUtil::GetMap(wms, m_layerDefIds, m_bbox, m_crs,
-                m_width, m_height, resourceService, featureService, session);
-            map->SetWatermarkUsage(MgMap::WMS);
+                // Get the background color
+                Ptr<MgColor> bkColor = MgWmsMapUtil::GetBackgroundColor(m_bgColor, m_transparent);
 
-            // Get the image format
-            // Note: should be valid, since this mapping has already happened
-            // in the Validate phase.
-            STRING format;
-            wms.MapValue(kpszDefineSupportedFormats,m_format.c_str(),format);
+                // Get the extents
+                Ptr<MgEnvelope> extents = MgWmsMapUtil::GetExtents(m_bbox);
 
-            // Render the map
-            Ptr<MgRenderingService> renderingService = (MgRenderingService*)CreateService(MgServiceType::RenderingService);
-            Ptr<MgSelection> selection;
-            Ptr<MgByteReader> mapImage = renderingService->RenderMap(map, selection, extents, m_width, m_height, bkColor, format);
+                // Create session
+                Ptr<MgUserInformation> userInfo = m_siteConn->GetUserInfo();
+                site = m_siteConn->GetSite();
+                session = site->CreateSession();
+                userInfo->SetMgSessionId(session);
 
-            // Set the result
-            STRING sMimeType = mapImage->GetMimeType();
-            hResult->SetResultObject(mapImage, sMimeType.length() > 0 ? sMimeType : m_format);
+                // Get a map object corresponding to the request parameters
+                Ptr<MgMap> map = MgWmsMapUtil::GetMap(wms, m_layerDefIds, m_bbox, m_crs,
+                    m_width, m_height, resourceService, featureService, session);
+                map->SetWatermarkUsage(MgMap::WMS);
+
+                // Render the map
+                Ptr<MgRenderingService> renderingService = (MgRenderingService*)CreateService(MgServiceType::RenderingService);
+                Ptr<MgSelection> selection;
+                Ptr<MgByteReader> mapImage = renderingService->RenderMap(map, selection, extents, m_width, m_height, bkColor, format);
+
+                // Set the result
+                STRING sMimeType = mapImage->GetMimeType();
+                hResult->SetResultObject(mapImage, sMimeType.length() > 0 ? sMimeType : m_format);
+            }
         }
         else
         {

Modified: sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcFramework.h
===================================================================
--- sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcFramework.h	2020-07-24 11:10:57 UTC (rev 9685)
+++ sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcFramework.h	2020-07-24 13:11:35 UTC (rev 9686)
@@ -167,4 +167,6 @@
 //
 //extern CPSZ kpszFilenameGlobalConfig       ;// = _("OgcWmsService.config");
 
+extern CPSZ kpszOpenLayersMimeType         ;// = _("application/openlayers");
+
 #endif//_OgcFramework_h

Modified: sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.cpp
===================================================================
--- sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.cpp	2020-07-24 11:10:57 UTC (rev 9685)
+++ sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.cpp	2020-07-24 13:11:35 UTC (rev 9686)
@@ -215,6 +215,8 @@
 CPSZ kpszVersionRediculouslyHighVersion = _("9999.9.9"); // If no version is provided, we "ask" for this (to get
                                                          // the highest version possible.
 
+CPSZ kpszOpenLayersMimeType          = _("application/openlayers"); //OpenLayers mime type
+
 DocLoaderFunc MgOgcServer::ms_fnDocLoader = NULL;
 
 
@@ -1888,7 +1890,20 @@
     ProcessExpandableText(pszTextWithExpansion,(int)szlen(pszTextWithExpansion));
 }
 
+void MgOgcServer::OutputViewerResponse(CREFSTRING selfUrl, MgHttpResult* hResult)
+{
+    STRING content = L"<html><head></head><body>";
+    content += L"<p>TODO: Display OpenLayers view with the following URL</p>";
+    content += selfUrl;
+    content += L"</body></html>";
 
+    std::string mbContent = MgUtil::WideCharToMultiByte(content);
+    Ptr<MgByteSource> bs = new MgByteSource((BYTE_ARRAY_IN)mbContent.c_str(), (INT32)mbContent.length());
+    bs->SetMimeType(MgMimeType::Html);
+    Ptr<MgByteReader> br = bs->GetReader();
+    hResult->SetResultObject(br, br->GetMimeType());
+}
+
 MgOgcServer::CDictionaryStackFrame::CDictionaryStackFrame(MgOgcServer* pServer)
 : m_pServer(pServer)
 {

Modified: sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.h
===================================================================
--- sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.h	2020-07-24 11:10:57 UTC (rev 9685)
+++ sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcServer.h	2020-07-24 13:11:35 UTC (rev 9686)
@@ -553,8 +553,9 @@
     // to actually do the loading.  See signature, above.
     static void SetLoader(DocLoaderFunc fnDocLoad);
 
+    void OutputViewerResponse(CREFSTRING selfUrl, MgHttpResult* hResult);
+
 private:
-
     // Pointer to the document loader function; modified by SetLoader().
     static DocLoaderFunc ms_fnDocLoader;
 

Modified: sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.cpp
===================================================================
--- sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.cpp	2020-07-24 11:10:57 UTC (rev 9685)
+++ sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.cpp	2020-07-24 13:11:35 UTC (rev 9686)
@@ -48,6 +48,7 @@
                                        _("<translate from=\"image/png\">PNG</translate>")
                                        _("<translate from=\"image/gif\">GIF</translate>")
                                        _("<translate from=\"image/tiff\">TIF</translate>")
+                                       _("<translate from=\"application/openlayers\">application/openlayers</translate>")
                                        // Below is REQUIRED.  Illegal strings should map to "".
                                        _("<translate></translate>");
 

Modified: sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.h
===================================================================
--- sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.h	2020-07-24 11:10:57 UTC (rev 9685)
+++ sandbox/jng/ogc_viewer_representation/Web/src/HttpHandler/OgcWmsServer.h	2020-07-24 13:11:35 UTC (rev 9686)
@@ -50,7 +50,6 @@
     CPSZ GetServiceType();
     CPSZ GetTemplatePrefix();
 
-
     // Gets the template info for default exception, when no other exception type is at hand.
     void GetDefaultExceptionInfo(REFSTRING sTemplate,REFSTRING sMimeType);
 



More information about the mapguide-commits mailing list