Fórum Duvida sobre Google Maps e Android #470508

19/02/2014

0

Olá gostaria de tirar uma duvida, até besta se for ver.
Seguinte estou querendo fazer um log com a minha localização(A cada Nmin ele se atualiza o arquivo de log com o local onde estou no momento) Até ai ok. Porém só estou conseguindo puxar o CEP e a Cidade.
Ex: São Paulo / 18520-000. E no caso gostaria de pegar a rua e a exata cidade.

Ex: Sao Paulo / Cerquilho / Av. Joao PIlon /.

Eu sei que pode parecer meio estupido esta pergunta, mas se puderem ajudar agradeco. A proposito estou utilizando o Android como plataforma com o firemonkey mobile na versão Delphi XE5.

Att.
Marcelo Urso

Marcelo Urso

Responder

Posts

19/02/2014

Deivison Melo

Seria interessante postar seu código para que possamos ajudá-lo...

Abração e bons códigos!!!
Responder

Gostei + 0

19/02/2014

Marcelo Urso

unit location1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects, FMX.StdCtrls,
  FMX.ListBox, FMX.Layouts, FMX.WebBrowser, FMX.Sensors, System.Sensors, FMX.MobilePreview,
  FMX.Colors, FMX.Memo, FMX.Edit, FMX.Ani, IdBaseComponent, IdDateTimeStamp,
  FMX.DateTimeCtrls, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;

type
  TForm2 = class(TForm)
    Localização: TColorBox;
    Label1: TLabel;
    ListBox1: TListBox;
    LocationSensor1: TLocationSensor;
    Switch1: TSwitch;
    Ativar: TLabel;
    Estado: TListBoxItem;
    Cidade: TListBoxItem;
    CodigoPostal: TListBoxItem;
    Latitude: TListBoxItem;
    Longitude: TListBoxItem;
    WebBrowser1: TWebBrowser;
    Memo1: TMemo;
    Timer1: TTimer;
    WebAnimation1: TFloatAnimation;
    WebwAnimation1: TFloatAnimation;
    Timer2: TTimer;
    Button1: TButton;
    IdHTTP1: TIdHTTP;

   procedure LocationSensor1LocationChanged(Sender: TObject; const Oldlocation,
    NewLocation: TLocationCoord2D);
    procedure Switch1Switch(Sender: TObject);
    procedure Button1Click(Sender: TObject);

   
  private
    { Private declarations }
    FGeocoder: TGeocoder;
    procedure  OnGeocodeReverseEvent(const Address: TCivicAddress);

  public
    { Public declarations }

  end;

var
  Form2: TForm2;
  Memo1 : string;
  Edit1 : string;
  date: Tdatetime;


implementation

{$R *.fmx}

procedure TForm2.Switch1Switch(Sender: TObject);
var hue:string;
begin
   LocationSensor1.Active := Switch1.IsChecked;
   timer1.Enabled := true;
   date := now;
   DateTimeToString(hue, 'dd/mm/yyyy | hh:MM:ss', date);
   Memo1.Lines.Add( hue +  ' --> Lat ' + Estado.ItemData.Detail +  ' | Lon: ' + Cidade.ItemData.Detail);
   Memo1.Lines.SaveToFile('/sdcard/test.txt');


 end;

procedure TForm2.Button1Click(Sender: TObject);

begin
  showmessage('oi');

end;


procedure TForm2.LocationSensor1LocationChanged(Sender: TObject;
  const OldLocation, NewLocation: TLocationCoord2D);
var
   URLString: String;
   LLatitudem, LLongitude: string;
   LSettings: TFormatSettings;
   LDecSeparator: Char;
begin
   LDecSeparator := FormatSettings.DecimalSeparator;
   LSettings := FormatSettings;

   try
      FormatSettings.DecimalSeparator := '.';
      Latitude.ItemData.Detail := Format('%2.6f', [NewLocation.Latitude]);
      Longitude.ItemData.Detail := Format('%2.6f',[NewLocation.Longitude]);

      LLongitude := FloatToStr(NewLocation.Longitude, LSettings);
      URLString := Format(
         'https://maps.google.com.br/maps?q=%2.6f, %2.6f&output=embed',
         [NewLocation.Latitude, Newlocation.Longitude]);
   finally
      FormatSettings.DecimalSeparator := LDecSeparator;
   end;
   WebBrowser1.Navigate(URLString);

   if not Assigned(FGeocoder) then begin
      if Assigned(TGeocoder.Current) then begin
         FGeocoder := TGeocoder.Current.Create;
      end;
      if Assigned(FGeocoder) then begin
         FGeocoder.OnGeocodeReverse := OnGeocodeReverseEvent;
      end;
   end;

   if Assigned(FGeocoder) and not FGeocoder.Geocoding then begin
      FGeocoder.GeocodeReverse(NewLocation);
   end;

end;

procedure TForm2.OnGeocodeReverseEvent(const Address: TCivicAddress);
begin
    if Address <> nil then
    begin
        Estado.ItemData.Detail := Address.Adminarea;
        Cidade.ItemData.Detail := Address.PostalCode;
        CodigoPostal.ItemData.Detail := Address.Address;



    end;
end;

end.

Aqui esta.
Estou usando, para treinamento, o exemplo do Delphi Xe5 "Location Demo". O log no caso é salvo em um txt e para eu ter certeza que o mesmo esta se atualizando deixo ele também no Memo1.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar