Konum

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Konum

Mesaj gönderen brs »

Selamlar;

Konumu DMS (derece, dakika, saniye) olarak delphide almak mümkün mü?

Resim
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
ertank
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: Konum

Mesaj gönderen ertank »

Merhaba,

Android konumu Double cinsinden tek rakam içinde verir. Bunu DMS'ye çevirme işlemi Android'in kendi geliştirme platformunda basit bir iki format fonksiyonu iken Delphi'de bu iş için fonksiyonları kendimizin yazması gerekiyor.

Test edilmemiş aşağıdaki fonksiyonları deneyebilirsiniz.

Kod: Tümünü seç

function GetLatitudeAsDSM(const Coord: Double): string;
var
  Degree, Minute, Second: Double;
begin
  Degree := Abs(Trunc(Coord));
  Minute := Trunc(60 * (Coord - Degree));
  Second := 60 * (Coord - Degree - Minute);
  if Coord > 0 then
    Result := 'N'
  else
    Result := 'S';

  Result := Result + Degree.ToString() + '° ' + Minute.ToString() + ''' ' + Second.ToString() + '"';
end;

function GetLongitudeAsDSM(const Coord: Double): string;
var
  Degree, Minute, Second: Double;
begin
  Degree := Abs(Trunc(Coord));
  Minute := Trunc(60 * (Coord - Degree));
  Second := 60 * (Coord - Degree - Minute);
  if Degree > 0 then
    Result := 'E'
  else
    Result := 'W';

  Result := Result + Degree.ToString() + '° ' + Minute.ToString() + ''' ' + Second.ToString() + '"';
end;
Kaynaklar:
https://en.wikipedia.org/wiki/Geographi ... conversion
https://support.groundspeak.com/index.p ... age&id=207
Cevapla