【问题标题】:How to disable android map marker click auto center如何禁用android地图标记单击自动中心
【发布时间】:2013-04-02 06:18:55
【问题描述】:

我正在寻找一种方法来禁用我的地图片段在选定标记功能上的自动居中。我仍然希望标记 InfoWindow 显示出来,但只是不要将整个地图放在我选择的标记上。

【问题讨论】:

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


【解决方案1】:

看看下面的帖子:

Don't snap to marker after click in android map v2

@DMan 给出了一个方法,基本上你需要消耗OnMarkerClick 事件并覆盖默认行为:

// Since we are consuming the event this is necessary to
// manage closing openned markers before openning new ones
Marker lastOpenned = null;

mMap.setOnMarkerClickListener(new OnMarkerClickListener() {
public boolean onMarkerClick(Marker marker) {
    // Check if there is an open info window
    if (lastOpenned != null) {
        // Close the info window
        lastOpenned.hideInfoWindow();

        // Is the marker the same marker that was already open
        if (lastOpenned.equals(marker)) {
            // Nullify the lastOpenned object
            lastOpenned = null;
            // Return so that the info window isn't openned again
            return true;
        } 
    }

    // Open the info window for the marker
    marker.showInfoWindow();
    // Re-assign the last openned such that we can close it later
    lastOpenned = marker;

    // Event was handled by our code do not launch default behaviour.
    return true;
}
});

【讨论】:

  • @Emil Adz,我使用了相同的逻辑,但我仍然可以在Marker Click 上移动地图;
  • @AravinthaBashyam.c 如果您在此方法的最后返回 true,那么它不应该移动,为什么会被否决?
  • @AravinthaBashyam.c 我想你已经写了很多次 setOnMarkerOnclick,
  • 你是什么意思,答案非常好,并且得到了 5 个用户的支持,如果它对你不起作用,那么你做错了什么,用你的代码打开一个新问题,我会尽力帮助你。
【解决方案2】:

简单的方法:

  1. 实现 setOnMarkerClickListener()
  2. 默认情况下返回“TRUE”以防止 GoogleMap 将地图中心移动到标记处。

例子:

map.setOnMarkerClickListener(
    new OnMarkerClickListener() {
        boolean doNotMoveCameraToCenterMarker = true;
        public boolean onMarkerClick(Marker marker) {
            //Do whatever you need to do here ....
            return doNotMoveCameraToCenterMarker;
        }
    });

【讨论】:

    【解决方案3】:

    非常简单:

    使用下面的代码来实现 setOnMarkerClickListener()。

    @Override
    public boolean onMarkerClick(Marker marker) {
    
        marker.showInfoWindow(); // show info window
    
        return true; // can't move map by this
    } 
    

    【讨论】:

      【解决方案4】:

      简单。将moveOnMarkerPress 属性添加到MapView 并设置为false。

       <MapView
            moveOnMarkerPress={false}
      >
      

      【讨论】:

      • 这似乎是针对 ReactNative,而不是针对原生 Android SDK
      猜你喜欢
      • 2015-10-06
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多