【问题标题】:How to select a marker on GoogleMaps programmatically如何以编程方式在 GoogleMaps 上选择标记
【发布时间】:2015-06-04 21:11:15
【问题描述】:

正确的是,当我按下按钮时,它会加载 GoogleMaps、制作标记并显示自定义信息窗口。

MarkerOptions markerOptions = new MarkerOptions();
//etc.
mMap.addMarker(markerOptions).showInfoWindow();

我希望标记处于被点击状态,而用户自己实际上没有点击它,程序应该为他做这件事 The reason I want this is so that when the marker is selected (now by a manual user click) is it also show two icons.一个用来制作路线,另一个直接使用这些坐标前往 googlemaps。

我怎样才能做到这一点,除了只显示 infoWindow,它还选择标记?

【问题讨论】:

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


    【解决方案1】:

    您真正想要的是一个始终存在的悬停信息窗口,以及选择标记时出现的悬停信息窗口。正确的?有一个标记“双重选择”是您获得两个悬停窗口的方式。只是,您不能双重选择标记。如果它被选中,再次选择它什么都不做。

    这是因为选择标记所做的只是显示一个信息窗口,根据信息窗口文档,这是不可能的。 Only one info window is displayed at a time.

    我不能告诉你如何去做你想做的事(因为它做不到)。但这是您可以做的一种选择。使用两个子视图实现 custom info window interface,一个始终可见,一个在用户单击标记之前“消失”。

    以编程方式显示信息窗口(就像您已经在使用 .showInfoWindow() 一样),然后使用 mMap.setOnMarkerClickListener() 设置一个函数,指示您的自定义 infoWindow 将第二个视图从“消失”切换到“可见”。

    祝你好运,编码愉快!

    【讨论】:

      【解决方案2】:

      您可以像这样以编程方式“点击”。有点hack,但Android就是这样。

          MarkerOptions markerOptions = new MarkerOptions();
          Marker marker = googleMap.addMarker(markerOptions);
      
          markerClickListener = new GoogleMap.OnMarkerClickListener() {
              @Override
              public boolean onMarkerClick(@NonNull Marker marker) {
                  
                  return false;
              }
          };
          
          googleMap.setOnMarkerClickListener(markerClickListener);
      
          markerClickListener.onMarkerClick(marker);
      

      【讨论】:

        【解决方案3】:

        您应该在您的地图或地图片段上实现GoogleMap.OnMapClickListener

        在 Click 监听器中,在地图上的点击位置添加新标记

        这样你就可以解决你的问题

        【讨论】:

        • 我不明白这如何解决我的问题。我希望标记处于通常通过单击而无需用户单击标记的状态,程序应该这样做。
        【解决方案4】:
            GMAP.addMarker(new MarkerOptions()
                    .position(new LatLng(myMarker.latitude, myMarker.longitude))
                    .title("My Marker"));
            GMAP.setOnMarkerClickListener(new OnMarkerClickListener() {
                public boolean onMarkerClick(Marker marker) {
                    Log.d("TAG", "Marker was clicked");
                    return true;
                }
            });
        

        【讨论】:

        • 这不就是给marker添加一个clickListener吗?那不是我问的。我希望标记处于被点击的状态,而用户自己实际上没有点击它,程序应该为他这样做。
        猜你喜欢
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-12
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        • 2020-06-15
        相关资源
        最近更新 更多