May 02

Pessoal,

Neste post vou mostrar como você pode integrar a sua aplicação com o Google Maps.

Primeiro vamos entender qual a idéia dessa aplicação.

No banco de dados temos 2 tabelas “CIDADES” e “ESTADOS”

image

Nós vamos criar uma página de dados com as cidades e queremos que seja mostrado em nossa página uma mapa desta cidade, veja o resultado final:

image

Na definição de design da nossa página de cidades colocamos um IFRAME que será o container para a nosso mapa.

Note que o restante das definições é padrão do GASweb.

Nós criamos também uma tabela auxiliar para estados e estamos mostrando o estado usando fórmula do GASweb.

image

Vamos agora fazer a página de MAPAS.

Primeiro vamos criar um módulo de USERCONTROL, o objetivo é que você possa usar este mapa em outras páginas se precisar.

image

Neste USERCONTROL vamos colocar simplesmente um DIV e vamos chamalo de myMap.

Agora vem a parte da integração com a API do Google Maps, bem para fazer essa integração você vai precisar de uma KEY, que é uma chave fornecida pelo google para que você possa usar a API do google no seu site.

Pegue a chave neste endereço:http://code.google.com/intl/pt-BR/apis/maps/signup.html

Depois disso vamos colocar o código necessário para acesso a esta API.

Este código você deve colocar na guia C# do seu USERCONTROL

#region CÓDIGO DE USUARIO
      public enum MapStyle
        {
            G_NORMAL_MAP,
            G_SATELLITE_MAP,
            G_HYBRID_MAP,
            G_PHYSICAL_MAP
        };

        public int zoom { get; set; }
        public string mapContainer { get; set; }
        public MapStyle mapStyle { get; set; }
        public decimal latitude { get; set; }
        public decimal longitude { get; set; }
        public bool pushPin { get; set; }
        public string pushPinTitle { get; set; }
        public string pushPinDescription { get; set; }
        public string MapWidth { get; set; }
        public string MapHeight { get; set; }
        public string City { get; set; }
       
        string Lt;
        string Lg;
        protected void Page_Load(object sender, EventArgs e)
        {
           
            GoogleMaps Mapas = new GoogleMaps("COLE AQUI A SUA CHAVE");
            Mapas.GetLatLng(City);
            Lt = Mapas.LatLang.Latitude;
            Lg = Mapas.LatLang.Longitude;
            InjectJavaScriptBingMaps();
           
        }

        public void InjectJavaScriptBingMaps()
        {
            StringBuilder javascriptFunction = new StringBuilder();
            javascriptFunction.Append("getGoogleMaps(");
            javascriptFunction.Append("'myMap',");
            javascriptFunction.Append("" + Lt+",");//  latitude.ToString(CultureInfo.InvariantCulture.NumberFormat) + ",");
            javascriptFunction.Append("" + Lg+",");//  longitude.ToString(CultureInfo.InvariantCulture.NumberFormat) + ",");
            javascriptFunction.Append("" + zoom + ",");
            javascriptFunction.Append("" + pushPin.ToString().ToLower() + ",");
            javascriptFunction.Append("'" + pushPinTitle + "',");
            javascriptFunction.Append("'" + pushPinDescription + "',");
            javascriptFunction.Append("" + mapStyle + ",");
            javascriptFunction.Append("'" + MapWidth + "',");
            javascriptFunction.Append("'" + MapHeight + "'");
            javascriptFunction.Append(");");
            Page.ClientScript.RegisterStartupScript(GetType(), "Javascript", javascriptFunction.ToString(), true);
        }
 
#endregion

#region CLASSES DO USUARIO
    public class GoogleMaps
    {

        private string API_KEY = string.Empty;
        public LatLng LatLang;
        public GoogleMaps(string api_key)
        {
            this.API_KEY = api_key;
        }

        public void SetApiKey(string key)
        {

            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentException("API Key is invalid");
            }
            this.API_KEY = key;

        }


        /// <summary>

        /// Perform a geocode lookup of an address
   
        /// </summary>
   
        /// <param name="addr">The address in CSV form line1, line2, postcode</param>
   
        /// <param name="output">CSV or XML</param>
   
        /// <returns>LatLng object</returns>
   
        public LatLng GetLatLng(string addr)
        {
            var url = "http://maps.google.com/maps/geo?output=csv&key=" +
                       this.API_KEY + "&q=" + HttpContext.Current.Server.UrlEncode(addr);
   
            var request = WebRequest.Create(url);
            var response = (HttpWebResponse)request.GetResponse();
   
            if (response.StatusCode == HttpStatusCode.OK)
            {
                var ms = new MemoryStream();
                var responseStream = response.GetResponseStream();
                var buffer = new Byte[2048];
                int count = responseStream.Read(buffer, 0, buffer.Length);
                while (count > 0)
                {
                    ms.Write(buffer, 0, count);
                    count = responseStream.Read(buffer, 0, buffer.Length);
                }
   
                responseStream.Close();
                ms.Close();
                var responseBytes = ms.ToArray();
                var encoding = new System.Text.ASCIIEncoding();
                var coords = encoding.GetString(responseBytes);
                var parts = coords.Split(',');
   
   
                this.LatLang =new LatLng(parts[2],parts[3]);
                return LatLang;
            }
            return null;
        }

    }
    public class LatLng
    {
        public string Latitude { get; set; }
        public string Longitude { get; set; }

        public LatLng()
        {

        }

 

        public LatLng(string lat, string lng)
        {
            this.Latitude = lat;
            this.Longitude = lng;
        }

    }
#endregion

A função deste código é receber como parametros a cidade e o estado que serão mostrados no MAPA , buscar a LATITUDE e LONGITUDE desta cidade e renderizar o MAPA na página.

Vamos agora criar uma página ASPX que vai receber o nosso USERCONTROL.

image

Veja que nós apenas colocamos um controle do tipo USERCONTROL e apontamos na propriedade MODULE qual o USERCONTROL a ser carregado.

Nesta página na guia c# temos este pequeno código que define algumas propriedades do nosso usercontrol.

Este código será chamado no evento LOAD da nossa página

image

    protected void Form1_()
        {
            UserControl1.City = Cidade + "," + Estado;
            UserControl1.pushPin = true;
            UserControl1.pushPinTitle="Sample Title";
            UserControl1.pushPinDescription = "Sample Description";
            UserControl1.zoom=17;
            UserControl1.MapWidth="600px" ;
            UserControl1.MapHeight="400px" ;
            UserControl1.mapStyle = GoogleMapsControl.MapStyle.G_NORMAL_MAP;
        }

Nosso próximo passo é colocar essa página chamada MAPAS no IFRAME da página de dados das cidades.

Para fazer isso use o seguinte código na guia C# da nossa página de cidades.

    protected override void OnLoadComplete(EventArgs e)
        {
            System.Web.UI.HtmlControls.HtmlControl FrmMapas;
            FrmMapas = (HtmlControl)this.FindControl("IFrame1");
            FrmMapas.Attributes["src"] = "Mapas.aspx?Cidade='"+ TextBox2.Text+"'&Estado='"+ Label6.Text + "'";
            FrmMapas.Attributes["onload"] = "hideProgress()";

            base.OnLoadComplete(e);
        }

Veja que este código tem a função de pegar o objeto do IFRAME e setar os valores de SRC e de LOAD.

Também é aqui que passamos para a página de MAPAS os parametros da cidade e o estado que serão renderizados.

Agora é só gerar nosso código e usar em nossa aplicação.

Você pode pegar o exemplo desta solução do GASweb aqui

Comente nossos posts sua colaboração é fundamental para a evolução do GASweb.

Pablo Hadler

Comentarios (3) -

Проститутки Киева - mister-x.com

Posted on Friday, 17 June 2011 00:46

Молодые проститутки Киева, такие же прекрасные как цветы в Киеве. Насладитесь их незабываемой компанией.

Путаны Москвы

Posted on Tuesday, 16 August 2011 20:59

Зачетные девочки в Москве и других городах России и Украины только здесь.

Украшения из натуральных камней

Posted on Monday, 22 August 2011 07:21

Лучший выбор украшений из натуральных камней.

Add comment




biuquote
Loading