我正在编写一个应用程序,其中我有一个地图,其中包含用户放下的标记
我想到了这种删除用户不想要的标记的方法:首先点击一个图标,然后点击标记,标记就会被删除。我遇到的问题是,在初始点击图标后,所有标记都会在点击时被删除。我需要一种摆脱OnClickListener
的方法。我试过return;
,但它没有用。
mDelete = view.findViewById(R.id.Im_delete);
mDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: clicked Delete icon");
deleteMarker();
return;
}
});
private void deleteMarker(){
Toast.makeText(getActivity(), "Click a marker to delete it", Toast.LENGTH_SHORT).show();
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
marker.remove();
return false;
}
});
}
答案 0 :(得分:2)
您的文字说明不太清楚,但请指出我认为您可以做的一些更改:
在公共布尔值onMarkerClick(标记标记)上,一旦删除标记,就应该返回true以避免默认行为。
我认为您应该在方法deleteMarker之外添加setOnMarkerClickListener,并且为了避免用户在单击时删除标记,您可以使用布尔标记(mDeleteMode)。
使用mDeleteMode标志,当用户点击mDelete时将其设置为true,并将其设置为false,例如,a)用户删除标记,b)外部点击或c)再次点击mDelete
public class yourClass {
private boolean mDeleteMode = false;
protected void yourMethod(View view...) {
mDelete = view.findViewById(R.id.Im_delete);
mDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: clicked Delete icon");
Toast.makeText(getActivity(),
"Click a marker to delete it",
Toast.LENGTH_SHORT).show();
mDeleteMode = true;
}
});
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
if (mDeleteMode) {
mDeleteMode = false;
marker.remove();
return true;
}
return false;
}
});
}
}