コード例 #1
0
ファイル: WebMapBase`3.cs プロジェクト: cugkgq/Project
        public virtual Stream Render(out string mimeType)
        {
            if (CacheProvider.ExistsInCache(MapRequestConfig))
            {
                ///todo: think of a less hacky solution to mime type here!
                mimeType = MapRequestConfig.MimeType;
                Stream s = CacheProvider.RetrieveStream(MapRequestConfig);
                s.Position = 0;
                return(s);
            }
            else
            {
                RaiseBeforeInitializeMap();
                InitMap();
                RaiseMapInitialized();

                RaiseBeforeLoadLayers();
                LoadLayers();
                RaiseLayersLoaded();

                ConfigureMap();

                RaiseBeforeLoadMapState();
                LoadMapState();
                RaiseMapStateLoaded();

                ConfigureRenderer();

                RaiseBeforeMapRender();

                Stream s = MapRenderer.Render(Map, out mimeType);

                try
                {
                    if (string.Compare(mimeType, MapRequestConfig.MimeType, true) == 0)
                    {
                        ///don't cache it if there is a mime type mismatch.
                        ///perhaps we should raise an exception?
                        s.Position = 0;
                        CacheProvider.SaveToCache(MapRequestConfig, s);
                        s.Position = 0;
                    }
                    RaiseMapRenderDone();
                    return(s);
                }
                catch
                {
                    if (s != null)
                    {
                        s.Close();
                    }

                    CacheProvider.RemoveFromCache(MapRequestConfig);
                    throw;
                }
            }
        }
コード例 #2
0
        public override Stream Render(out string mimeType)
        {
            Stream s = null;

            if (CacheProvider.ExistsInCache(MapRequestConfig))
            {
                mimeType   = MapRequestConfig.MimeType;
                s          = CacheProvider.RetrieveStream(MapRequestConfig);
                s.Position = 0;
                return(s);
            }
            try
            {
                RaiseBeforeInitializeMap();
                InitMap();
                RaiseMapInitialized();

                RaiseBeforeLoadLayers();
                LoadLayers();
                RaiseLayersLoaded();

                ConfigureMap();


                if (MapRequestConfig.WmsMode == WmsMode.Capabilites)
                {
                    XmlDocument caps = Capabilities.GetCapabilities(Context, Map, ServiceDescription);
                    s = new MemoryStream();
                    caps.Save(s);
                    mimeType = "text/xml";
                }
                else
                {
                    ConfigureRenderer();

                    AssignMonitorToDataProviders();

                    RaiseBeforeLoadMapState();
                    LoadMapState();
                    RaiseMapStateLoaded();

                    ConfigureMapView();

                    RaiseBeforeMapRender();
                    s = MapView.Render(out mimeType);
                }
                if (s == null)
                {
                    return(null);
                }

                try
                {
                    if (string.Compare(mimeType, MapRequestConfig.MimeType, true) == 0)
                    {
                        ///don't cache it if there is a mime type mismatch.
                        ///perhaps we should raise an exception?
                        s.Seek(0L, SeekOrigin.Begin);
                        CacheProvider.SaveToCache(MapRequestConfig, s);
                        s.Seek(0L, SeekOrigin.Begin);
                    }
                    RaiseMapRenderDone();
                    return(s);
                }
                catch
                {
                    CacheProvider.RemoveFromCache(MapRequestConfig);
                    throw;
                }
            }
            catch (ClientDisconnectedException)
            {
                if (s != null)
                {
                    s.Close();
                }
                throw;
            }
            catch (XmlFormatableExceptionBase)
            {
                if (s != null)
                {
                    s.Close();
                }
                throw;
            }
            catch (Exception ex)
            {
                if (s != null)
                {
                    s.Close();
                }
                throw new XmlFormatableExceptionWrapper(ex);
            }
        }
コード例 #3
0
        public virtual Stream Render(out String mimeType)
        {
            Stream s = null;

            if (CacheProvider.ExistsInCache(MapRequestConfig))
            {
                mimeType   = MapRequestConfig.MimeType;
                s          = CacheProvider.RetrieveStream(MapRequestConfig);
                s.Position = 0;
                return(s);
            }

            try
            {
                RaiseBeforeInitializeMap();
                InitMap();
                RaiseMapInitialized();

                RaiseBeforeLoadLayers();
                LoadLayers();
                RaiseLayersLoaded();

                ConfigureMap();

                ConfigureRenderer();

                AssignMonitorToDataProviders();

                RaiseBeforeLoadMapState();
                LoadMapState();
                RaiseMapStateLoaded();

                ConfigureMapView();

                RaiseBeforeMapRender();

                s = MapView.Render(out mimeType);

                if (s == null)
                {
                    return(null);
                }

                try
                {
                    if (String.Compare(mimeType, MapRequestConfig.MimeType, true) == 0)
                    {
                        ///don't cache it if there is a mime type mismatch.
                        ///perhaps we should raise an exception?
                        s.Seek(0, SeekOrigin.Begin);
                        CacheProvider.SaveToCache(MapRequestConfig, s);
                        s.Seek(0, SeekOrigin.Begin);
                    }

                    RaiseMapRenderDone();
                    return(s);
                }
                catch
                {
                    CacheProvider.RemoveFromCache(MapRequestConfig);
                    throw;
                }
            }
            catch (ClientDisconnectedException)
            {
                if (!(s == null))
                {
                    s.Close();
                }

                throw;
            }
            catch (XmlFormatableExceptionBase)
            {
                if (s != null)
                {
                    s.Close();
                }

                throw;
            }
            catch (Exception ex)
            {
                if (s != null)
                {
                    s.Close();
                }

                throw new XmlFormatableExceptionWrapper(ex);
            }
        }