![]() |
|
Mapview mark Kaldırma - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: Mapview mark Kaldırma (/showthread.php?tid=4693) |
Mapview mark Kaldırma - arsl01 - 04-04-2020 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? Cvp: Mapview mark Kaldırma - Fesih ARSLAN - 04-04-2020 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. Mapview mark Kaldırma - arsl01 - 04-04-2020 Teşekkür ederim hocam sonucu paylaşacağım Cvp: Mapview mark Kaldırma - Fesih ARSLAN - 04-04-2020 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 şekliSetArsMarkerEkle(Position, 'Adresim', True); Mapview mark Kaldırma - arsl01 - 05-04-2020 Hocam gerçekten harikasınız çok teşekkür ederim
|