添加新的谷歌地图标记后不会被删除

我猜阿特里

我目前正在开发一个应用程序,可以向学生显示公交车的位置!
问题是当我从地图上删除标记marker.remove();map.clear();从地图中删除标记并检索新位置并将其显示在地图上时,旧位置仍然显示。
这是我的代码:

@Override
  public void onMapReady(final GoogleMap googleMap) {
    map = googleMap;
    map.getUiSettings().setMyLocationButtonEnabled(false);
    map.setMyLocationEnabled(false);

    new Timer().scheduleAtFixedRate(new TimerTask() {
      @Override
      public void run() {
        Webi.with(getContext())
          .from("http://31.25.91.60:8888/GetResult.php")
          .onResponse(new OnResponse() {
            @Override
            public void Response(String content, String s1) {
              try {
                JSONArray arr = new JSONArray(content);
                if(arr.length() > 0) {
                  for (int i = 0; i < arr.length(); i++) {
                    JSONObject jobj = arr.getJSONObject(i);

                    name.add(jobj.getString("driverid"));
                    lat.add(jobj.getString("lat"));
                    latlong.add(jobj.getString("longlat"));
                    time.add(jobj.getString("time"));
                  }

                  for(int index = 0; index < name.size(); index++) {
                    final int finalIndex = index;
                    getActivity().runOnUiThread(new Runnable() {
                      @Override
                      public void run() {
                        try {
                          LatLng point = new LatLng(Double.parseDouble(lat.get(finalIndex)),Double.parseDouble(latlong.get(finalIndex)));
                          MarkerOptions markerOptions = new MarkerOptions()
                            .position(point)
                            .title(name.get(finalIndex))
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_pin));
                          marker = map.addMarker(markerOptions);
                          markers.add(marker);
                        } catch (Exception e) {
                          e.printStackTrace();
                        }
                      }
                    });
                  }
                } else {
                  Toast.makeText(getActivity(), "چیزی پیدا نشد !", Toast.LENGTH_SHORT).show();
                  map.clear();
                }
              } catch (Exception e) {
                map.clear();
                e.printStackTrace();
              }
            }
          }).connect();
      }
    }, 0, 10000);
    LatLng university = new LatLng(36.2497511,58.8287331);
    CameraPosition cameraPosition = new CameraPosition.Builder()
      .target(university)
      .zoom(17)
      .bearing(90)
      .tilt(40)
      .build();
    map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
  }

  private Runnable runnable = new Runnable() {
    @Override
    public void run() {
      try {
        for(int index = 0; index < markers.size(); index++) {
          marker = markers.get(index);
          marker.remove();
          map.clear();
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
      handler.postDelayed(this, 9000);
    }
  };

每 10 秒从服务器获取一次日期,每 9 秒必须删除一次标记

科迪·W。

尝试将您map.clear()和整个for循环移动到 UI 线程 Runnable 中。我认为您总是希望在添加新标记之前清除地图。否则,您将在同步这两个操作时遇到问题。例如,运行 2 次后,标记将在 18 秒时移除,然后直到 20 秒才会添加。

另外,我没有看到您在哪里清除数据列表,您是否在添加新响应数据之前执行此操作?

getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
        map.clear();
        for(int index = 0; index < name.size(); index++) {
            try {
                LatLng point = new LatLng(Double.parseDouble(lat.get(index)), Double.parseDouble(latlong.get(index)));
                MarkerOptions markerOptions = new MarkerOptions()
                        .position(point)
                        .title(name.get(index))
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_pin));
                marker = map.addMarker(markerOptions);
                markers.add(marker);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

即使在卸载后,NetBeans IDE 7.1 图标也不会被删除。我如何删除它?

来自分类Dev

谷歌地图标记不会显示(jQuery)

来自分类Dev

谷歌地图-从javascript动态删除标记图标

来自分类Dev

如何添加谷歌地图标记

来自分类Dev

回形针附件销毁后不会被删除

来自分类Dev

清除头盔后某些PVC不会被删除

来自分类Dev

Laravel 作业在处理后不会被删除

来自分类Dev

jQuery新按钮已创建,但不会被删除

来自分类Dev

标签不会被删除

来自分类Dev

标签不会被删除

来自分类Dev

评论不会被删除

来自分类Dev

在谷歌地图标记上添加标签和图标

来自分类Dev

谷歌地图标记未添加到地图

来自分类Dev

如何向谷歌地图标记添加唯一链接

来自分类Dev

将弹出窗口添加到谷歌地图标记

来自分类Dev

角度谷歌地图标记

来自分类Dev

RxJS 谷歌地图标记

来自分类Dev

谷歌地图标记比较

来自分类Dev

谷歌地图标记 Javascript

来自分类Dev

保存不会被删除的文件

来自分类Dev

UIViewController将不会被删除

来自分类Dev

空格将不会被删除

来自分类Dev

以前的字符实例不会被删除

来自分类Dev

脚本运行后,SQS消息永远不会被删除/删除

来自分类Dev

删除具有完全特权的用户后,Mysql数据库不会被删除

来自分类Dev

添加新标记后删除标记?

来自分类Dev

谷歌地图标记API标记的标题

来自分类Dev

d3js-在exit()上转换后,节点不会被删除

来自分类Dev

d3js-在exit()上转换后,节点不会被删除