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?
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.
Teşekkür ederim hocam sonucu paylaşacağım
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);
Hocam gerçekten harikasınız

çok teşekkür ederim