BruTile.GoogleMaps.GoogleV3TileProvider.GetTile C# (CSharp) Метод

GetTile() публичный Метод

public GetTile ( TileInfo tileInfo ) : byte[]
tileInfo TileInfo
Результат byte[]
        public byte[] GetTile(TileInfo tileInfo)
        {
            if (m_logger.IsDebugEnabled)
            {
                m_logger.DebugFormat("Fetching tile: {0},{1},{2}", tileInfo.Index.Level, tileInfo.Index.Col, tileInfo.Index.Row);
            }

            string url = m_tileSchema.MapUrlTemplates[m_r.Next(0, m_tileSchema.MapUrlTemplates.Length - 1)];
            url = string.Format(url, tileInfo.Index.Col, tileInfo.Index.Row, tileInfo.Index.Level, CalculateSParam(tileInfo.Index.Col, tileInfo.Index.Row));

            if (m_logger.IsDebugEnabled)
            {
                m_logger.DebugFormat("Using URL: {0}", url);
            }

            byte[] data = Fetch(url);

            if (m_tileSchema.MapType == GoogleV3TileSource.MapTypeId.HYBRID)
            {
                string overlayurl = m_tileSchema.OverlayUrlTemplates[m_r.Next(0, m_tileSchema.OverlayUrlTemplates.Length - 1)];
                overlayurl = string.Format(overlayurl, tileInfo.Index.Col, tileInfo.Index.Row, tileInfo.Index.Level, CalculateSParam(tileInfo.Index.Col, tileInfo.Index.Row));
                byte[] overlayData = Fetch(overlayurl);

                using (var ms = new MemoryStream(data))
                {
                    using (var ms2 = new MemoryStream(overlayData))
                    {
                        using (System.Drawing.Image img = new System.Drawing.Bitmap(ms))
                        {
                            using (System.Drawing.Image overlayimg = new System.Drawing.Bitmap(ms2))
                            {
                                using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(img))
                                {
                                    g.DrawImage(overlayimg, 0, 0);
                                }

                                using (var newMs = new MemoryStream())
                                {

                                    ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
                                    Encoder myEncoder =
                                        Encoder.Quality;
                                    var myEncoderParameters = new EncoderParameters(1);
                                    var myEncoderParameter = new EncoderParameter(myEncoder,
                                        90L);
                                    myEncoderParameters.Param[0] = myEncoderParameter;
                                    img.Save(newMs, jgpEncoder, myEncoderParameters);

                                    newMs.Seek(0, SeekOrigin.Begin);
                                    data = new byte[newMs.Length];
                                    newMs.Read(data, 0, data.Length);
                                    newMs.Close();
                                }
                            }
                        }
                        ms2.Close();
                    }
                    ms.Close();
                }
            }

            return data;
        }