Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Al capturar coordenadas y ponerlas en un mapa, falla en algunos celulares (https://www.clubdelphi.com/foros/showthread.php?t=92906)

jkokoj 10-03-2018 06:36:54

Al capturar coordenadas y ponerlas en un mapa, falla en algunos celulares
 
Saludos cordiales a todos, el error ocurre cuando trato de hacer la conversión de tipo de dato, de Double a String, trato de convertir y guardar en las variables lat y long. Bueno en realidad mi consulta es la siguiente. Por que mi código funciona en un samsung S4 y no funciona en los celulares J2 prime y J5 prime, también lo probé en un xiaomi de gama alta y funciona. Si alguien me puede ayudar a entender por que ocurre esto.

Código Delphi [-]
procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
var
  mapCenter: TMapCoordinate;
  MyMarker: TMapMarkerDescriptor;
  lat,long : Double;
  i : Integer;
begin
  I:= Item.Index;

  lat :=StrToFloat(LJSonArray.Items[i].GetValue<string>('latitud'));
  long :=StrToFloat(LJSonArray.Items[i].GetValue<string>('longitud'));



  mapCenter := TMapCoordinate.Create(Lat, Long);
  MapView1.Location := mapCenter;
  MapView1.Zoom:=16;
  MyMarker := TMapMarkerDescriptor.Create(mapCenter, 'Ubicaciones enviadas');
  MyMarker.Draggable := True;
  MyMarker.Visible :=True;
  MapView1.AddMarker(MyMarker);
  MapView1.MapType := TMapType.Hybrid;
end;

jhonny 10-03-2018 08:44:25

El error típico que cometemos en este caso es que no tenemos en cuenta que seguramente el servidor tiene una configuración (Formatsettings.DecimalSeparator) distinta a la de los dispositivos móviles a donde está llegando dicha información de Latitud y Longitud, por lo que por ejemplo...

Cita:

El servidor envía con coma:
Latitud: 40,75793
Longitud: -73,98551 (notese la coma).

Cuando el móvil espera leer los decimales, con punto... así:
Latitud: 40.75793
Longitud: -73.98551 (notese el punto)
O viceversa. Es por ello que en unos celulares te funciona (Porque tienen la misma configuración de punto flotante que el servidor) y en otros no.

Espero que este sea tu caso y que te sirva de algo la orientación, saludos.

Neftali [Germán.Estévez] 11-03-2018 21:38:51

También hay que tener en cuenta que cuando no hay disponibilidad de coordenadas correctas, porque no está activado el GPS, no hay buena recepción, no hay permisos,... el valor que recibimos creo recordar que es NAND.
Por lo tanto antes de hacer la conversión, habría que comprobar esta posibilidad.

jkokoj 12-03-2018 05:28:46

Muchas gracias por las respuestas y sip tienen razón es por la configuración del punto y la coma. Gracias.


La franja horaria es GMT +2. Ahora son las 00:49:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi