none
Carregar Google maps com DataTable / Foreach RRS feed

  • Pergunta

  • Boa Noite!

    o que estou fazendo de errado? Estou tentando carregar o Google Maps com dados do banco de dados e eu estou usando o seguinte código, mas estou tendo um erro quando eu entro no foreach:

     "An exception of type 'System.Exception' occurred in GMaps.dll but was not handled in user code" "Additional information: Latitude must be beetwen -90 and 90"

       if (!IsPostBack)
        {
    
            GLatLng mainLocation = new GLatLng(-18.8533, -41.9450);
            GMapMyFriends.setCenter(mainLocation, 15);
    
            XPinLetter xpinLetter = new XPinLetter(PinShapes.pin_star, "C", Color.Green, Color.White, Color.Chocolate);
            GMapMyFriends.Add(new GMarker(mainLocation, new GMarkerOptions(new GIcon(xpinLetter.ToString(), xpinLetter.Shadow()))));
    
            DataTable MyFriends = db.ExecuteSelect("SELECT lat ,lng FROM tblAdress;");
    
            PinIcon p;
            GMarker gm;
             foreach (DataRow dtRow in MyFriends.Rows)
            {
                foreach (DataColumn dc in MyFriends.Columns)
                {   p = new PinIcon(PinIcons.home, Color.Cyan);
                    gm = new GMarker(new GLatLng(Convert.ToDouble(dtRow["lat"]), Convert.ToDouble(dtRow["lng"])),
                        new GMarkerOptions(new GIcon(p.ToString(), p.Shadow())));
               }
            }
    
        }
    }

    O erro acontece nessa linha

     gm = new GMarker(new GLatLng(Convert.ToDouble(dtRow["lat"]), Convert.ToDouble(dtRow["lng"])),

    Quando passou o mouse em cima do dtRow["lat"]  vejo os valores la dentro de itemarray

    https://dl.dropboxusercontent.com/u/19875180/Error.jpg

    alguma sugestão de como resolver isso ?

    terça-feira, 14 de outubro de 2014 23:48

Respostas

  • Obrigado pela atenção thiago, 

    Mas o erro estava na conversão dos dados

     gm = new GMarker(new GLatLng(Convert.ToDouble(dtRow["lat"].ToString().Replace(".", ",")), Convert.ToDouble(dtRow["lng"].ToString().Replace(".", ","))),

    mas de qualquer forma obrigado !

    • Marcado como Resposta RJ_Silva quinta-feira, 16 de outubro de 2014 20:31
    quinta-feira, 16 de outubro de 2014 20:31

Todas as Respostas

  • Pelo o que eu vi você esta com um valor defasado na base e está tentando inseri-lo em um variavel "gm" que é de tamanho fixo, na verdade ela recebe dois parametros, latitude e longitude:

    EX:

    gm = new GMarker(Entra_Latitude, Entra_longitude)

    Caso você não saiba:

    Latitute varia entre -90 e 90

    longitude de -180 a 180

    Então o que você pode fazer e dar um select na base verificando os valores que estão fora os intervalos, para confirmar a suspeita de dados incorretos na base

    ou

    Os itens do datarow você testa os valore caso esteja no intervalo você inseri na variavel senão envia uma mensagem, nesse caminho você mata. Eu creio que seja isso.

    (y)

    quarta-feira, 15 de outubro de 2014 23:29
  • Obrigado pela atenção thiago, 

    Mas o erro estava na conversão dos dados

     gm = new GMarker(new GLatLng(Convert.ToDouble(dtRow["lat"].ToString().Replace(".", ",")), Convert.ToDouble(dtRow["lng"].ToString().Replace(".", ","))),

    mas de qualquer forma obrigado !

    • Marcado como Resposta RJ_Silva quinta-feira, 16 de outubro de 2014 20:31
    quinta-feira, 16 de outubro de 2014 20:31