Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mapview mark Kaldırma
#1
Merhaba Tmapview ile daire çizdiriyorum her yeni daire eklemeden önce önceki daireyi şu şekilde temizliyorum
FmapDaire.DisposeOf;

Fakat Mark ekleyip her seferinde Mark'ı temizlemek istediğimde tepki vermiyor Remove komutunu denediğimde ise uygulama kapanıyor.
Yeni Mark oluşturmadan önce nasıl bir önceki mark'ı temizlerim?
Muharrem ARSLAN
WWW
Cevapla
#2
Merhaba,
Marker tipinde global bir TList oluşturun ve oluşturduğunuz her marker'ı da List'e ekleyin. Böylece sonradan istediğiniz bir marker değerine ulaşabilirsiniz.
Bir önceki marker'ı silmek için remove işleminde List'in son elemanından bir önceki (list.count-1) değerini kullanın (Yeni marker'ı eklemeden silmek isterseniz list.count değerini kullanın). Sonrasında List'ten işlem yaptığınız marker'ı da silin.
Cevapla
#3
Teşekkür ederim hocam sonucu paylaşacağım
Muharrem ARSLAN
WWW
Cevapla
#4
Merhaba,
Çalışmanızı biraz daha hızlı sonuçlandıracağına inandığım ve
birçok harita işlemlerinde kullandığım kod yapısını paylaşayım. 
 public
   FMarkers: TList<TMapMarker>;

 ...

procedure TformAna.FormCreate(Sender: TObject);
begin
 FMarkers := TList<TMapMarker>.Create;
end;

procedure TformAna.FormDestroy(Sender: TObject);
begin
 if Assigned(FMarkers) then
   FreeAndNil(FMarkers);
end;

procedure TformAna.SetArsMapViewYenile();
begin
 If FMarkers.Count > 0 Then frmHarita.MapView1.Location := FMarkers.Last.Descriptor.Position; // else sizin belirleyeceğiniz varsayılan bir konum. 
end;

procedure TformAna.SetArsMarkerSilTumu;
Var
 Marker: TMapMarker;
begin
 Try
   if (FMarkers <> Nil) And (FMarkers.Count > 0) then
   Begin
     for Marker in FMarkers do
       Marker.Remove;
     FMarkers.Clear;
     SetArsMapViewYenile();
   End;
 Except

 End;
end;

Marker eklemek için de aşağıdaki gibi bir metod kullanıyorum.
procedure TfrmHarita.SetArsMarkerEkle(const Position: TMapCoordinate; const Baslik: String; TumunuSil: Boolean);
var
 MyMarker: TMapMarkerDescriptor;
 Yer: TMapMarker;
begin
 if TumunuSil then
   formAna.SetArsMarkerSilTumu();
 MyMarker := TMapMarkerDescriptor.Create(Position, 'Yeni Konum');
 MyMarker.Draggable := False;
 MyMarker.Visible := True;
 MyMarker.Title := Baslik;
 MyMarker.Snippet := '(' + Position.Latitude.ToString + ' - ' + Position.Longitude.ToString + ')';
 Yer := MapView1.AddMarker(MyMarker);
 formAna.FMarkers.Add(Yer);
 MapView1.Location := Yer.Descriptor.Position;
 MapView1.Zoom := 11;
end;
Kullanım şekli
SetArsMarkerEkle(Position, 'Adresim', True);
Cevapla
#5
Hocam gerçekten harikasınız Smile çok teşekkür ederim
Muharrem ARSLAN
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Mapview üzerinde splash ekran logo sorunu arsl01 4 939 05-12-2023, Saat: 23:00
Son Yorum: arsl01
  Mapview mark rotate sorunu arsl01 12 2.527 07-02-2022, Saat: 14:45
Son Yorum: arsl01
  OMR (optical mark reader) ikurt07 1 1.497 16-05-2020, Saat: 10:21
Son Yorum: mrmarman
  MapView bileşen olayları KUNTAY 0 980 05-04-2020, Saat: 23:24
Son Yorum: KUNTAY
  MapView Comp Hatası mcuyan 6 4.700 16-03-2019, Saat: 21:02
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi