none
(MAPS GOOGLE) Aplicación de escritorio Windows Form c# RRS feed

  • Pergunta

  • Estimados buenas noches,

    Necesito saber si alguien me puede ayudar con lo siguiente. (Aplicación de escritorio Windows Form c#)

    1) Tengo un webbrowser en windowsform para visualizar un mapa, hasta hace 2 semanas me funcionaba excelente mi solución, pero al parecer se ha realizado alguna actualización en Maps de google y me ha fallado.

    Hago lo siguiente:

     string url_mapa = "http://maps.google.cl/maps?q=Chile&output=embed";
    Uri direccion = new Uri(url_mapa);
    webBrowser1.ScriptErrorsSuppressed = true; 
    webBrowser1.Url = direccion;

    2) No me carga el mapa y me da el siguiente error:

    "The Google Maps Embed API must be used in an iframe."

    3) Al encontrarme con dicho error, inserte un iframe como html en el webbrowser:

     string url_mapa = "http://maps.google.cl/maps?q=Holderlin+2044&output=embed";
     webBrowser1.DocumentText = "<iframe width=100% height=100% src="+url_mapa+"></iframe>";
    
    
    //ESTE ES EL METODO PARA MOSTRAR EL FRAME
    
    private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
            {
                int x;
                //  The URL contains the results of the
                //  HTML form following the equals sign.
                x = e.Url.ToString().LastIndexOf("=");
                if (x != -1)
                {
                    string Redirect;
                    Redirect = e.Url.ToString().Substring(x + 1);
                    if (Redirect != "")
                    {
                        // Error handling code omitted in this example.
                        // Uri constructor throws a UriFormatException if there's
                        // an error.
                        webBrowser1.Navigate(new Uri(Redirect));
                    }
                    else
                    {
                        MessageBox.Show("Specify a URL");
                    }
                }
            }
    
     
               

    4) Al hacer este paso me apareció el mapa, pero me aparece con los mensajes de inicio de sesión de Google (Gmail)

    Para concluir, necesito saber si alguien sabe como sacar estos mensajes o si hay otra forma de mostrar el mapa en una aplicación WindowsForm.

    Muchas gracias, espero respuesta, ya que necesito solucionar esto o moriré en el intento.. (Ya que me aburri de buscar en net :( )

    Tomás Parada

    terça-feira, 15 de abril de 2014 01:34

Respostas

  • Esta es la solucion y funciona perfecto:

    Primero: Debes crearte una API_Key aqui https://developers.google.com/maps/documentation/embed/guide#api_key siguiendo los pasos indicados de la seccion "API key" y luego habilitar el servicio "Google Maps Embed API". Esto permitira a tu api_key utilizar el servicio de navegacion hasta 2,000,000 requests/day

    Segundo, debes utilizar este codigo. Se puede perfeccionar agregando validaciones a la url etc, pero esto es la esencia.

                    webBrowser1.AllowNavigation = true; //permite al browser navegar
                    webBrowser1.ScriptErrorsSuppressed = true; //fuerza al browser a no mostrar errores de script(necesario)
                    webBrowser1.Navigate("about:blank"); //crea el espacio de navegacion
                    HtmlDocument doc = this.webBrowser1.Document; //crea un documento donde indicaras el html personalizado
                    doc.Write(String.Empty);//inicializa el documento
                    webBrowser1.DocumentText = "<iframe width='600' height='450' frameborder='0' style='border:0' " +
                     "src='" + address + "'></iframe>"; //escribes en el browser lo que debera interpretar. En este caso el resultado es la navegacion hacia la url que se indica en el iframe

    Tercero: construye una url, en mi caso usé la variable "address", similar a la de abajo utilizando tu propia Key_api:

    string url = "https://www.google.com/maps/embed/v1/place?q=Antonio%20Varas%20175%2C%20Santiago%2C%20Chile&key=TU_API";

    ... Y VOALÁ!!!!!!, funciona maravilloso!

    Nota: el ejemplo fue probado en winform con .net frks 3.5, VStudio 2012

    Espero les funcione tambien

    Roberto


    Roberto Soto "Lo que no se mide no existe"


    • Editado -RaSv- terça-feira, 17 de fevereiro de 2015 01:13 correccion ortografica
    • Marcado como Resposta Karen MalagónModerator quarta-feira, 18 de novembro de 2015 23:33
    terça-feira, 17 de fevereiro de 2015 01:12

Todas as Respostas

  • hola

    puedes utilizar también GMap.NET - Great Maps for Windows Forms & Presentation.

    Saludos


    Martín Fabregues Córdoba, Argentina

    terça-feira, 15 de abril de 2014 01:45
  • Gracias, pero no puedo utilizar código externo para solucionar el problema, he descargado un proyecto de internet para probar si funciona y tampoco funcionó. 

    He seguido buscando y no he encontrado nada para resolver el problema.

    Muchas gracias.

    terça-feira, 15 de abril de 2014 01:55
  • Hola, si ha la ruta le quitas el output=embed funciona perfectamente, sin tener que utilizar iframe.

    string url_mapa = "http://maps.google.cl/maps?q=Chile";

    Saludos.


    Víctor del Valle - http://www.vrdelvalle.net

    terça-feira, 15 de abril de 2014 07:17
  • Lamentablemente si le saco el embed funciona, pero se ve el resto de google maps no solo el plano (Mapa), antes cuando ponía el embed funcionada correctamente, ahora al agregarlo me pidió el iframe y tampoco funcionó, por lo que aun no puedo resolver mi problema.

    terça-feira, 15 de abril de 2014 10:39
  • hola

    esa url la estas generando desde aqui

    porque por lo que he visto lo que muestra es en la esquina superior derecha un boton en azul para autenticar, pero nad amas que eso

    Insertar un mapa (nuevo Google Maps)

    en el link explica sobre el tema de usuario logueado o no, pero esto no deberia afectar al mapa que muestras

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina



    terça-feira, 15 de abril de 2014 11:24
  • Leandro: Lo llegare a probar y te cuento como me va. Gracias
    terça-feira, 15 de abril de 2014 17:34
  • Leandro:

    Al ingresar la URL que me dices, me entrega algo como esto:

    <iframe width="600" height="450" frameborder="0" style="border:0" src="https://www.google.com/maps/embed/v1/search?q=Chile&key=AIzaSyCdXfdcYZEJFeTPjFLYT8vPGL-D7fwTM90"></iframe>

    pero al entregarme esto:

    "The Google Maps API server rejected your request. This API project is not authorized to use this API."

    Al entregarme esto, le quite a la URL el key: 

    https://www.google.com/maps/embed/v1/search?q=Chile&key=AIzaSyCdXfdcYZEJFeTPjFLYT8vPGL-D7fwTM90"

    "The Google Maps API server rejected your request. This service requires an API key."

    por lo que seguiré intentando como lo estaba haciendo antes, pero me queda algo como esto:

    Espero que alguien me pueda ayudar un poco o solo orientarme.

    Muchas gracias.

    Tomás Parada


    quarta-feira, 16 de abril de 2014 00:47
  • Nadie supo como solucionar esto?... aun estoy tratando de solucionar el problema de los mapas en aplicaciones de escritorio y no logro encontrar alguna forma de mostrarlo.

    Tengo que gestionar una ruta dentro de esta aplicación... lamentablemente estoy medio rendido

    gracias igual!

    domingo, 20 de abril de 2014 17:07
  • Esta es la solucion y funciona perfecto:

    Primero: Debes crearte una API_Key aqui https://developers.google.com/maps/documentation/embed/guide#api_key siguiendo los pasos indicados de la seccion "API key" y luego habilitar el servicio "Google Maps Embed API". Esto permitira a tu api_key utilizar el servicio de navegacion hasta 2,000,000 requests/day

    Segundo, debes utilizar este codigo. Se puede perfeccionar agregando validaciones a la url etc, pero esto es la esencia.

                    webBrowser1.AllowNavigation = true; //permite al browser navegar
                    webBrowser1.ScriptErrorsSuppressed = true; //fuerza al browser a no mostrar errores de script(necesario)
                    webBrowser1.Navigate("about:blank"); //crea el espacio de navegacion
                    HtmlDocument doc = this.webBrowser1.Document; //crea un documento donde indicaras el html personalizado
                    doc.Write(String.Empty);//inicializa el documento
                    webBrowser1.DocumentText = "<iframe width='600' height='450' frameborder='0' style='border:0' " +
                     "src='" + address + "'></iframe>"; //escribes en el browser lo que debera interpretar. En este caso el resultado es la navegacion hacia la url que se indica en el iframe

    Tercero: construye una url, en mi caso usé la variable "address", similar a la de abajo utilizando tu propia Key_api:

    string url = "https://www.google.com/maps/embed/v1/place?q=Antonio%20Varas%20175%2C%20Santiago%2C%20Chile&key=TU_API";

    ... Y VOALÁ!!!!!!, funciona maravilloso!

    Nota: el ejemplo fue probado en winform con .net frks 3.5, VStudio 2012

    Espero les funcione tambien

    Roberto


    Roberto Soto "Lo que no se mide no existe"


    • Editado -RaSv- terça-feira, 17 de fevereiro de 2015 01:13 correccion ortografica
    • Marcado como Resposta Karen MalagónModerator quarta-feira, 18 de novembro de 2015 23:33
    terça-feira, 17 de fevereiro de 2015 01:12
  • muchas gracias, siendo el 2015, me funciono excelente en una pequeña aplicacion C# en visualstudio 2008.
    quarta-feira, 18 de novembro de 2015 22:23
  • A mi no me funciona hice todos los pasos que mencionas pero me aparece en blanco, no carga el mapa

    Me pueden ayudar...

    quarta-feira, 19 de fevereiro de 2020 02:53
  • Hola Dan, ha pasado tiempo. puede que google haya cambiado la manera de conectar o colocado restricciones.

    Probaré de nuevo el código y te cuento. Intentalo mientras, si encuentras la solucion nos comentas

    Roberto


    Roberto Soto "Lo que no se mide no existe"

    sexta-feira, 21 de fevereiro de 2020 13:30
  • Pude realizar un visualizador WEB muy fácilmente, de hecho para quien busque esto, las herramientas del framework 4.6.2 incluyen un componente llamado WebView y WebviewCompatible, las cuales básicamente generan un navegador Microsoft Edge, hay que migrar el proyecto a 4.6.2 

    https://docs.microsoft.com/en-us/windows/communitytoolkit/controls/wpf-winforms/webview

    domingo, 5 de abril de 2020 19:44