如何禁用android地图标记点击自动中心

Fin*_*Red 32 android google-maps-api-2 android-fragments

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

Emi*_*Adz 54

看看以下帖子:

在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;
}
});
Run Code Online (Sandbox Code Playgroud)

  • 你是什​​么意思,答案非常好,被5个用户赞成,如果它不适合你那么你做错了,用你的代码打开一个新问题,我会尽力帮助你. (2认同)

Pan*_*her 33

简单方法:

  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;
        }
    });
Run Code Online (Sandbox Code Playgroud)


Vis*_*dav 6

非常简单:

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

@Override
public boolean onMarkerClick(Marker marker) {

    marker.showInfoWindow(); // show info window

    return true; // can't move map by this
} 
Run Code Online (Sandbox Code Playgroud)