Sayfayı Yazdır | Pencereyi Kapat

Konum servisi

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1185
Tarih: 29 Kasım 2025 Saat 18:23
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Konum servisi
Mesajı Yazan: bedir_agdemir
Konu: Konum servisi
Mesaj Tarihi: 15 Ağustos 2025 Saat 17:20

var
konumZamanlayici: TclTimer;
gecenSure: Integer;

void konumuKontrolEt;
var
enlem, boylam: String;
konumListesi: TclStringList;
konumDegeri: String;
{
gecenSure = gecenSure + 1;
konumDegeri = Clomosy.LocationValue;
if ((konumDegeri <> '0|0') && (konumDegeri <> ''))
{
  konumZamanlayici.Enabled = False;
  konumZamanlayici.Free;
  enlem = clGetStringTo(konumDegeri, '|'); 
  boylam = clGetStringAfter(konumDegeri, '|'); 
  konumListesi = Clomosy.StringListNew;
  konumListesi.Add(enlem);
  konumListesi.Add(boylam);
  Clomosy.GlobalVariableStringList = konumListesi; 
  TclProLabel(CallerForm.clFindComponent('sonucLabel')).Caption = 'Konum Bulundu: ' + enlem + ', ' + boylam;

}
else if (gecenSure > 30)
{
  konumZamanlayici.Enabled = False;
  konumZamanlayici.Free;
  TclProLabel(CallerForm.clFindComponent('sonucLabel')).Caption = 'Konum alınamadı (zaman aşımı).';
}
else
{
  TclProLabel(CallerForm.clFindComponent('sonucLabel')).Caption = 'GPS sinyali aranıyor... (' + IntToStr(gecenSure) + 'sn)';
}
}
{
gecenSure = 0;
TclProLabel(CallerForm.clFindComponent('sonucLabel')).Caption = 'GPS sinyali aranıyor...';
Clomosy.GetCurrentLocation; 
konumZamanlayici = CallerForm.AddNewTimer(CallerForm, 'konumZamanlayici', 1000);
konumZamanlayici.Enabled = True; 
CallerForm.AddNewEvent(konumZamanlayici, tbeOnTimer, 'konumuKontrolEt');
}
kodumda 30 saniye süre içinde konum çekmek istiyorum fakat hem mobilde hem pc de konum verileri gelmiyor. 




Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 18 Ağustos 2025 Saat 18:11
Merhaba Bedir, 
Bir örnek yaptım konumla ilgili inceler misin? 

var
  MyForm: TclForm;
  btnKonumAl: TclProButton;
  lblSonuc: TclProLabel;
  lblBaslik: TclProLabel;
  
  latitude: String;
  longitude: String;
  konum: String;
  konumDegeri: String;
  btnBasitKonum: TclProButton;
  konumTimer: TclTimer;
  konumBekleniyor: Boolean;
  denemeSayisi: Integer;

void KonumKontrolEt
{
  if (not konumBekleniyor)
  
  denemeSayisi = denemeSayisi + 1;
  konumDegeri = Clomosy.LocationValue;
  
  // Debug bilgisi
  lblSonuc.Text = '🔍 Konum Aranıyor... (' + IntToStr(denemeSayisi) + 'sn)' + #13#10 +
                  'Konum Değeri: "' + konumDegeri + '"';
  
  // Konum alındı mı kontrol et
  if ((konumDegeri <> '0|0') && (konumDegeri <> '') && (Length(konumDegeri) > 3)) {
    // Konum başarıyla alındı
    konumBekleniyor = False;
    konumTimer.Enabled = False;
    
    // Konum değerini parse et
    latitude = clGetStringTo(konumDegeri, '|');
    longitude = clGetStringAfter(konumDegeri, '|');
    konum = latitude + '|' + longitude;
    
    // Sonucu göster
    lblSonuc.Text = '✅ Konum Başarıyla Alındı!' + #13#10 +
                    'Enlem: ' + latitude + #13#10 +
                    'Boylam: ' + longitude + #13#10 +
                    'Tam Konum: ' + konum + #13#10 +
                    'Süre: ' + IntToStr(denemeSayisi) + ' saniye';
    
    ShowMessage('📍 Konum başarıyla alındı!' + #13#10 + 
               'Enlem: ' + latitude + #13#10 + 
               'Boylam: ' + longitude);
               
  } else if (denemeSayisi >= 30) {
    // Zaman aşımı
    konumBekleniyor = False;
    konumTimer.Enabled = False;
    
    lblSonuc.Text = '⏰ Konum alınamadı (zaman aşımı)' + #13#10 +
                    'Lütfen GPS ayarlarınızı kontrol edin ve tekrar deneyin.';
    
    ShowMessage('❌ Konum alınamadı! Zaman aşımı.' + #13#10 + 
               'GPS ayarlarınızı kontrol edin.');
  }
}

void KonumAlClicked
{
  try {
    // Önceki timer'ı temizle
    if (Assigned(konumTimer)) {
      konumTimer.Enabled = False;
      konumTimer.Free;
    }
    
    // Değişkenleri sıfırla
    denemeSayisi = 0;
    konumBekleniyor = True;
    
    // Başlangıç mesajı
    lblSonuc.Text = '🔍 GPS Sinyali Aranıyor...' + #13#10 +
                    'Lütfen bekleyin...';
    
    // Konum isteği gönder
    Clomosy.GetCurrentLocation;
    
    // Timer oluştur (her 1 saniyede bir kontrol et)
    konumTimer = MyForm.AddNewTimer(MyForm, 'konumTimer', 1000);
    konumTimer.Enabled = True;
    
    // Event'i ekle
    MyForm.AddNewEvent(konumTimer, tbeOnTimer, 'KonumKontrolEt');
    
    ShowMessage('📍 Konum isteği gönderildi!' + #13#10 + 
               'GPS sinyali aranıyor... Lütfen bekleyin.');
               
  } except 
    lblSonuc.Text = '❌ Konum isteği gönderilemedi: ' + LastExceptionMessage;
    ShowMessage('Hata: ' + LastExceptionMessage);
  }
}

void KonumGirisClicked
{
  try {
    Clomosy.GetCurrentLocation;
    
    
    // Konum değerini al
    konumDegeri = Clomosy.LocationValue;
    
    // Debug bilgisi
    lblSonuc.Text = '🔍 Basit Konum Alma:' + #13#10 +
                    'Ham Konum: "' + konumDegeri + '"' + #13#10 +
                    'Uzunluk: ' + IntToStr(Length(konumDegeri));
    
    // Konum alındı mı kontrol et
    if ((konumDegeri <> '0|0') && (konumDegeri <> '') && (Length(konumDegeri) > 3)) {
      // Konum parse et
      latitude = clGetStringTo(konumDegeri, '|');
      longitude = clGetStringAfter(konumDegeri, '|');
      
      lblSonuc.Text = '✅ Basit Konum Alındı!' + #13#10 +
                      'Enlem: ' + latitude + #13#10 +
                      'Boylam: ' + longitude + #13#10 +
                      'Ham Veri: ' + konumDegeri;
      
      ShowMessage('📍 Basit konum alındı!' + #13#10 + 
                 'Enlem: ' + latitude + #13#10 + 
                 'Boylam: ' + longitude);
    } else {
      lblSonuc.Text = '❌ Konum alınamadı!' + #13#10 +
                      'Ham Veri: "' + konumDegeri + '"' + #13#10 +
                      'Lütfen GPS ayarlarınızı kontrol edin.';
      
      ShowMessage('❌ Konum alınamadı!' + #13#10 + 
                 'Ham veri: ' + konumDegeri);
    }
    
  } except 
    lblSonuc.Text = '❌ Hata: ' + LastExceptionMessage;
    ShowMessage('Hata: ' + LastExceptionMessage);
  }
}

void FormKapatildi
{
  // Timer'ı temizle
  if (Assigned(konumTimer)) {
    konumTimer.Enabled = False;
    konumTimer.Free;
  }
}

{
  MyForm = TclForm.Create(Self);
  MyForm.clSetWindowState(fwsMaximized);
  
  // Başlık
  lblBaslik = MyForm.AddNewProLabel(MyForm, 'lblBaslik', '📍 Basit Konum Servisi');
  lblBaslik.Align = alTop;
  lblBaslik.Height = 60;
  lblBaslik.Margins.Top = 20;
  lblBaslik.Margins.Left = 20;
  lblBaslik.Margins.Right = 20;
  lblBaslik.clProSettings.FontSize = 24;
  lblBaslik.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  lblBaslik.clProSettings.TextSettings.Font.Style = [fsBold];
  lblBaslik.clProSettings.FontHorzAlign = palCenter;
  lblBaslik.clProSettings.FontVertAlign = palCenter;
  lblBaslik.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#000000');
  lblBaslik.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ffffff');
  lblBaslik.clProSettings.BorderWidth = 2;
  lblBaslik.clProSettings.RoundHeight = 30;
  lblBaslik.clProSettings.RoundWidth = 30;
  lblBaslik.SetclProSettings(lblBaslik.clProSettings);
  
  // Konum al butonu (Timer ile)
  btnKonumAl = MyForm.AddNewProButton(MyForm, 'btnKonumAl', '📍 Timer ile Konum Al');
  btnKonumAl.Align = alTop;
  btnKonumAl.Height = 60;
  btnKonumAl.Margins.Top = 30;
  btnKonumAl.Margins.Left = 50;
  btnKonumAl.Margins.Right = 50;
  btnKonumAl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#007bff');
  btnKonumAl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  btnKonumAl.clProSettings.FontSize = 20;
  btnKonumAl.clProSettings.IsRound = True;
  btnKonumAl.clProSettings.RoundHeight = 30;
  btnKonumAl.clProSettings.RoundWidth = 30;
  btnKonumAl.SetclProSettings(btnKonumAl.clProSettings);
  
  // Basit konum butonu
 
  btnBasitKonum = MyForm.AddNewProButton(MyForm, 'btnBasitKonum', '📍 Basit Konum Al');
  btnBasitKonum.Align = alTop;
  btnBasitKonum.Height = 60;
  btnBasitKonum.Margins.Top = 15;
  btnBasitKonum.Margins.Left = 50;
  btnBasitKonum.Margins.Right = 50;
  btnBasitKonum.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#28a745');
  btnBasitKonum.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  btnBasitKonum.clProSettings.FontSize = 20;
  btnBasitKonum.clProSettings.IsRound = True;
  btnBasitKonum.clProSettings.RoundHeight = 30;
  btnBasitKonum.clProSettings.RoundWidth = 30;
  btnBasitKonum.SetclProSettings(btnBasitKonum.clProSettings);
  
  // Sonuç etiketi
  lblSonuc = MyForm.AddNewProLabel(MyForm, 'lblSonuc', 'Konum almak için butona tıklayın.');
  lblSonuc.Align = alTop;
  lblSonuc.Height = 150;
  lblSonuc.Margins.Top = 30;
  lblSonuc.Margins.Left = 30;
  lblSonuc.Margins.Right = 30;
  lblSonuc.clProSettings.FontSize = 16;
  lblSonuc.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  lblSonuc.clProSettings.FontHorzAlign = palCenter;
  lblSonuc.clProSettings.FontVertAlign = palCenter;
  lblSonuc.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#000000');
  lblSonuc.clProSettings.BorderColor = clAlphaColor.clHexToColor('#ffffff');
  lblSonuc.clProSettings.BorderWidth = 2;
  lblSonuc.clProSettings.RoundHeight = 20;
  lblSonuc.clProSettings.RoundWidth = 20;
  lblSonuc.SetclProSettings(lblSonuc.clProSettings);
  
  // Event'leri ekle
  MyForm.AddNewEvent(btnKonumAl, tbeOnClick, 'KonumAlClicked');
  MyForm.AddNewEvent(btnBasitKonum, tbeOnClick, 'KonumGirisClicked');
  MyForm.AddNewEvent(MyForm, tbeOnFormClose, 'FormKapatildi');
  
  MyForm.Run;
}



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net