0

TMapView를 사용하고 MapView1.AddMarker (...)를 사용하여 TMapView를 배치했으나 맵을 지우는 방법 (배치 된 모든 marers 제거)은 어떻게해야합니까?Delphi FMX MapView - 모든 마커 제거

문서에서 MapView.Clear와 같은 것을 찾을 수 없습니다.

답변

0

각 마커를 개별적으로 제거해야한다는 것을 알 수 있습니다. 즉, 작성한 TMapMarker 객체에 대한 참조를 저장해야합니다. TMapMarker (MapView1.AddMarker 호출의 결과)에는 두 가지 방법이 있습니다. "제거"는 맵에서 마커를 제거하고 "DisposeOf"는 마커를 맵에서 제거하고 TMapMarker 객체를 해제합니다. 마커는 루프에서이 코드에 의해 배치했다

var 
    mar : array of TMapMarker; 

procedure TForm1.clear_markers; 
var 
i:integer; 
begin 
for i:=0 to high(mar) do 
    begin 
    mar[i].Remove; 
    end; 
setlength(mar,0); 
end; 

+0

에서로드 당신은 그것에 나를 이길. 나는 안드로이드 맵 뷰 구현에 의해 관리되는 마커 컬렉션에 액세스 할 수있는 실용적인 방법이 없다는 것을 추가 할 예정이었습니다. 의미있는 방법으로 그것들을 반복하고 제거하기 위해서입니다. 적어도 부적절한 수준의 유지 보수가 불가능한 것은 아닙니다. – blong

+0

제 문제는 다음과 같습니다. 데이터베이스의 마커 좌표를 저장했습니다. 때로는 데이터베이스의 실제 상태에서 맵을 새로 고치는 데 필요합니다. 추가 된 마커에 대한 참조를 어떻게 저장할 수 있습니까? – milenjao

0

괜찮이 잘 작동합니다. 변수 LOC이 데이터베이스

setlength(mar,length(mar)+1); 
Descr := TMapMarkerDescriptor.Create(loc, s); 
mar[high(mar)]:=MapView1.AddMarker(Descr);