コード例 #1
0
        private static RenderedLayerDisplayInfo BuildLayerSelector(ViewerControl viewer, CachePackage cachePackage,
                                                                   string basePath, CrunchedFile crunchedFile)
        {
            RenderedLayerDisplayInfo renderedLayerDisplayInfo = new RenderedLayerDisplayInfo();

            renderedLayerDisplayInfo.tsmiList = new List <ToolStripMenuItem>();
            foreach (CrunchedLayer current in crunchedFile.crunchedLayers)
            {
                RenderedLayerSelector renderedLayerSelector = new RenderedLayerSelector(current);
                renderedLayerSelector.viewer     = viewer;
                renderedLayerSelector.menuItem   = new ToolStripMenuItem(current.displayName);
                renderedLayerSelector.tileSource = new RenderedTileSource(cachePackage,
                                                                          new VENamingScheme(Path.Combine(basePath, current.namingScheme.GetFilePrefix()),
                                                                                             current.namingScheme.GetFileSuffix()));
                renderedLayerSelector.menuItem.Tag    = renderedLayerSelector;
                renderedLayerSelector.menuItem.Click += MenuItem_Click;
                renderedLayerDisplayInfo.tsmiList.Add(renderedLayerSelector.menuItem);
            }

            for (int i = 0; i < renderedLayerDisplayInfo.tsmiList.Count; i++)
            {
                ((RenderedLayerSelector)renderedLayerDisplayInfo
                 .tsmiList[renderedLayerDisplayInfo.tsmiList.Count - 1 - i].Tag).ToggleLayer();
            }

            renderedLayerDisplayInfo.defaultView = crunchedFile.crunchedLayers[0].defaultView;
            return(renderedLayerDisplayInfo);
        }
コード例 #2
0
        private static CrunchedFile GetRenderedMashupsFromFile(Uri uri)
        {
            CrunchedFile crunchedFile;

            try
            {
                crunchedFile = CrunchedFile.FromUri(uri);
            }
            catch (XmlException ex)
            {
                throw new Exception(string.Format("File {0} does not conform to {1} format. (Error was: {2})",
                                                  uri,
                                                  CrunchedFile.CrunchedFilename,
                                                  ex.Message));
            }
            catch (Exception ex2)
            {
                throw new Exception(string.Format("Couldn't read {0}:\n{1}", uri, ex2.Message));
            }

            if (crunchedFile.crunchedLayers.Count == 0)
            {
                throw new Exception(string.Format("Found no rendered layers described in {0}\n", uri));
            }

            return(crunchedFile);
        }
コード例 #3
0
ファイル: CrunchedFile.cs プロジェクト: ymx0627/GMap.NET
        public static CrunchedFile FromUri(Uri uri)
        {
            XmlTextReader reader;

            if (uri.IsFile)
            {
                string localPath = uri.LocalPath;
                reader = new XmlTextReader(File.Open(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
            }
            else
            {
                if (!(uri.Scheme == "http"))
                {
                    throw new Exception(string.Format("Unhandled URI scheme {0}", uri.Scheme));
                }

                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
                httpWebRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Revalidate);
                D.Sayf(1, "Fetching {0}", new object[] { uri });
                HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                if (httpWebResponse.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception(
                              string.Format("HTTP {0} from web source", httpWebResponse.StatusCode.ToString()));
                }

                Stream responseStream = httpWebResponse.GetResponseStream();
                reader = new XmlTextReader(responseStream);
            }

            MashupParseContext mashupParseContext = new MashupParseContext(reader);
            CrunchedFile       crunchedFile       = null;

            using (mashupParseContext)
            {
                while (mashupParseContext.reader.Read() && crunchedFile == null)
                {
                    if (mashupParseContext.reader.NodeType == XmlNodeType.Element &&
                        mashupParseContext.reader.Name == crunchedFileTag)
                    {
                        crunchedFile = new CrunchedFile(mashupParseContext);
                        break;
                    }
                }

                mashupParseContext.Dispose();
            }

            if (crunchedFile == null)
            {
                throw new InvalidMashupFile(mashupParseContext,
                                            string.Format("{0} doesn't appear to be a valid crunched file.", uri));
            }

            return(crunchedFile);
        }
コード例 #4
0
        public static RenderedLayerDisplayInfo GetLayerSelector(ViewerControl viewer, CachePackage cachePackage, Uri uri)
        {
            RenderedLayerDisplayInfo result;

            try
            {
                CrunchedFile renderedMashupsFromFile = RenderedLayerSelector.GetRenderedMashupsFromFile(uri);
                D.Assert(uri.IsFile);
                string localPath = uri.LocalPath;
                result = RenderedLayerSelector.BuildLayerSelector(viewer, cachePackage, Path.GetDirectoryName(localPath), renderedMashupsFromFile);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error opening crunched file ", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                result = null;
            }
            return(result);
        }
コード例 #5
0
		private static RenderedLayerDisplayInfo BuildLayerSelector(ViewerControl viewer, CachePackage cachePackage, string basePath, CrunchedFile crunchedFile)
		{
			RenderedLayerDisplayInfo renderedLayerDisplayInfo = new RenderedLayerDisplayInfo();
			renderedLayerDisplayInfo.tsmiList = new List<ToolStripMenuItem>();
			foreach (CrunchedLayer current in crunchedFile.crunchedLayers)
			{
				RenderedLayerSelector renderedLayerSelector = new RenderedLayerSelector(current);
				renderedLayerSelector.viewer = viewer;
				renderedLayerSelector.menuItem = new ToolStripMenuItem(current.displayName);
				renderedLayerSelector.tileSource = new RenderedTileSource(cachePackage, new VENamingScheme(Path.Combine(basePath, current.namingScheme.GetFilePrefix()), current.namingScheme.GetFileSuffix()));
				renderedLayerSelector.menuItem.Tag = renderedLayerSelector;
				renderedLayerSelector.menuItem.Click += new EventHandler(RenderedLayerSelector.MenuItem_Click);
				renderedLayerDisplayInfo.tsmiList.Add(renderedLayerSelector.menuItem);
			}
			for (int i = 0; i < renderedLayerDisplayInfo.tsmiList.Count; i++)
			{
				((RenderedLayerSelector)renderedLayerDisplayInfo.tsmiList[renderedLayerDisplayInfo.tsmiList.Count - 1 - i].Tag).ToggleLayer();
			}
			renderedLayerDisplayInfo.defaultView = crunchedFile.crunchedLayers[0].defaultView;
			return renderedLayerDisplayInfo;
		}
コード例 #6
0
		public static CrunchedFile FromUri(Uri uri)
		{
			XmlTextReader reader;
			if (uri.IsFile)
			{
				string localPath = uri.LocalPath;
				reader = new XmlTextReader(File.Open(localPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite));
			}
			else
			{
				if (!(uri.Scheme == "http"))
				{
					throw new Exception(string.Format("Unhandled URI scheme {0}", uri.Scheme));
				}
				HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
				httpWebRequest.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Revalidate);
				D.Sayf(1, "Fetching {0}", new object[]
				{
					uri
				});
				HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
				if (httpWebResponse.StatusCode != HttpStatusCode.OK)
				{
					throw new Exception(string.Format("HTTP {0} from web source", httpWebResponse.StatusCode.ToString()));
				}
				Stream responseStream = httpWebResponse.GetResponseStream();
				reader = new XmlTextReader(responseStream);
			}
			MashupParseContext mashupParseContext = new MashupParseContext(reader);
			CrunchedFile crunchedFile = null;
			using (mashupParseContext)
			{
				while (mashupParseContext.reader.Read() && crunchedFile == null)
				{
					if (mashupParseContext.reader.NodeType == XmlNodeType.Element && mashupParseContext.reader.Name == CrunchedFile.crunchedFileTag)
					{
						crunchedFile = new CrunchedFile(mashupParseContext);
						break;
					}
				}
				mashupParseContext.Dispose();
			}
			if (crunchedFile == null)
			{
				throw new InvalidMashupFile(mashupParseContext, string.Format("{0} doesn't appear to be a valid crunched file.", uri));
			}
			return crunchedFile;
		}