2017-01-05 4 views
0

Googleマップでフラグメントを作成します。 地図からマーカーを削除したい場合、これを行うことはできません。私はすべてを試み、何も私を助けない。マーカーは削除を削除しますが、地図上に表示されますが、私のコードのエラーは何ですか?地図からマーカを削除する方法

MapFragment.java

HashMap<String, BaseMarker> mAllMarkers = new HashMap<>(); 
private GoogleMap mMap; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
try { 
     mRoot = inflater.inflate(R.layout.fragment_map, null); 
    } catch (InflateException e) { 

    /* map is already there, just return view as it is */ 
    } 


    mMap = null; 
    mMap = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)) 
      .getMap(); 

    for (final BaseMarker entry : baseMarkers) {//list of markers 
    Marker marker = mMap.addMarker(markerFactory.getMeetingPointCreateMarker(getActivity(), (MeetingPoint) entry)); 
        marker.showInfoWindow(); 
        entry.setMarker(marker); 
        mAllMarkers.put(entry.getMarkerId(), entry); 
    } 
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
     @Override 
     public boolean onMarkerClick(final Marker marker) { 
      removeMarker(); 
      } 
    }); 

    return mRoot; 
} 



public removeMarker(){//this call when I click in marker 
for (Map.Entry<String, BaseMarker> entry : mAllMarkers.entrySet()) { 
     BaseMarker marker = entry.getValue(); 
     if (marker.getMarker() != null) { 
       marker.getMarker().remove(); 
       mAllMarkers.remove(marker.getMarkerId()); 

      } 
    } 

} 

私mapFragment.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/mapFooter"> 

    <fragment 
     android:id="@+id/map" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    </RelativeLayout> 

答えて

0

あなたは、あなたがそれらを追加した直後にすべてのマーカーを削除しています。このビューは、ビューが完全にロードされていない場合にも実行されます。

0

はちょうどこのようmarker.remove()を呼び出し、簡単な方法があります:

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker) { 
     marker.remove(); 
     return false; 
    } 
}); 

も再登場するからそれを防ぐために、代わりにmarker.setVisible(false)を呼び出すconcider。

関連する問題