【问题标题】:Delphi FMX MapView - remove all markersDelphi FMX MapView - 删除所有标记
【发布时间】:2017-02-02 17:00:58
【问题描述】:

我有 TMapView 并使用 MapView1.AddMarker(...) 在其上放置了一些 TMapMarkerDescriptors,但我如何才能从中清除地图(删除所有放置的 marers)?

我在文档中找不到 MapView.Clear 之类的东西。

【问题讨论】:

    标签: android delphi google-maps-markers android-mapview firemonkey


    【解决方案1】:

    好的,这很好用

    var
       mar : array of  TMapMarker;
    
    procedure TForm1.clear_markers;
    var
    i:integer;
    begin
     if high(mar) > -1 then
      for i:=0 to high(mar) do
        if Assigned(mar[i]) then
         mar[i].Remove;
    
    setlength(mar,0);
    end;
    

    此代码在循环中放置了标记。 变量 locs 从数据库中加载

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

    【讨论】:

      【解决方案2】:

      据我所知,您似乎必须单独删除每个标记,这意味着您必须存储对您创建的 TMapMarker 对象的引用。 TMapMarker(MapView1.AddMarker 调用的结果)有两种方法。 “Remove”从地图中移除标记,而“DisposeOf”将从地图中移除标记并释放 TMapMarker 对象。

      【讨论】:

      • 你打败了我。我要补充一点,似乎没有可行的方法来访问由 Android 地图视图实现管理的标记集合,以便在它们之间进行有意义的迭代并删除它们(至少,并非没有不适当级别的不可维护的愚蠢行为)。
      • 我的问题是:我已经在数据库中存储了标记的坐标,有时需要从数据库中的实际状态刷新地图。如何存储对添加标记的引用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多