【问题标题】:How to select and deselect a marker in google maps in android?如何在android的谷歌地图中选择和取消选择标记?
【发布时间】:2015-04-20 15:33:12
【问题描述】:

我有一个使用Markers 在谷歌地图中标记的地点列表。我想选择一个Marker,这样它就会用不同的颜色突出显示。我已使用marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)) 设置它。当我点击同一个标记或任何其他标记时,我想删除在第一个标记中所做的选择并将其设置回默认颜色。

 map.setOnMarkerClickListener(new OnMarkerClickListener() {

    @Override
    public boolean onMarkerClick(Marker marker) {

        aa= marker.getPosition().latitude;
         bb=marker.getPosition().longitude;
        marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));

        }

根据上面的代码,当我单击其他标记时,在第一个标记中所做的选择仍然存在,并且保持颜色 HUE_BLUE。如何删除修改后的颜色并将选择转移到当前单击的标记?

【问题讨论】:

  • 您需要跟踪 LIST 或其他内容中的所有标记。现在,当您单击一个新的检查并删除以前的检查。
  • InfoWindow 是否仍显示先前单击的标记?还是严格来说,标记保持蓝色?
  • @DanielNugent 没有信息窗口会根据选择而改变。是的,标记保持蓝色,所以当我单击下一个标记时,该标记变为蓝色
  • 尝试在列表中添加每个标记,当单击任何标记时,首先取消选择列表迭代的所有标记,然后应用选择单击标记。

标签: android google-maps google-maps-markers


【解决方案1】:

我刚刚对此进行了测试,它可以工作,只需添加一个Marker 引用作为实例变量,以保留最后一次点击的Marker 的引用,并且每次点击一个新的Marker 时,设置上一个一回默认颜色。

您还可以在将Marker 设置为HUE_BLUE 之前检查!marker.equals(prevMarker),这将允许随后单击Marker 将颜色设置回默认颜色。

实例变量:

Marker prevMarker;

点击监听器:

mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {

        @Override
        public boolean onMarkerClick(Marker marker) {

            aa= marker.getPosition().latitude;
            bb=marker.getPosition().longitude;
            if (prevMarker != null) {
                //Set prevMarker back to default color
                prevMarker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
            }

            //leave Marker default color if re-click current Marker
            if (!marker.equals(prevMarker)) {
                marker.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
                prevMarker = marker;
            }
            prevMarker = marker;
            return false;
        }

    }); 

【讨论】:

  • 我想更改颜色,比较我将从其他类获得的响应,如以下if (marker.getSnippet().equals(currentEvent.getButton_one())) { response.setTextColor(context.getResources().getColor(R.color.green)); } else response.setTextColor(context.getResources().getColor(R.color.red)); marker.getSnippet() 的值是 Y 或 N,取决于用户按下的按钮。我想用 currentEvent.getButton_one(); 检查这个,它给出了第一个按钮的值。
  • 这里的问题是我在声明它的其他类中获得了 currentEvent.getButton_one() 的正确值,但在 CustomInfoWindow 类中没有。最终条件应该像这样检查: if Y == Y ---> GREEN else RED
  • @AtharvaPuranik,如果您在问题上需要帮助,请打开一个新问题并发布您的代码,我会看看!
  • @DanielNugent 我有四个带有四个不同图标的标记。如果我单击一个它应该选择一个特定的图标,如果我单击另一个标记,则应该取消选择前一个标记,并且应该选择当前图标及其特定图标,依此类推。你能帮帮我吗?
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
相关资源
最近更新 更多