Created
December 29, 2012 11:24
-
-
Save galex/4406283 to your computer and use it in GitHub Desktop.
Complete MapFragment loading and showing markers, plus refresh action item
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.fragment; | |
public class PlaceMapFragment extends RefreshMapFragment implements LoaderCallbacks<List<Category>> { | |
private static final int LOADER_ID = 613; | |
private HashMap<Marker, Place> markerPlaces; | |
@Override | |
public void onActivityCreated(Bundle savedInstanceState) { | |
super.onActivityCreated(savedInstanceState); | |
getSherlockActivity().getSupportLoaderManager().initLoader(LOADER_ID, null, this); | |
} | |
@Override | |
public Loader<List<Category>> onCreateLoader(int id, Bundle bundle) { | |
setRefreshing(true); | |
return new CategoryLoader(getSherlockActivity()); | |
} | |
@Override | |
public void onLoadFinished(Loader<List<Category>> loader, List<Category> data) { | |
if (getMap() != null) { | |
getMap().clear(); | |
markerPlaces = new HashMap<Marker, Place>(); | |
for (Category category : data) { | |
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(category.getType().getIconResId()); | |
for (Place place : category.getPlaces()) { | |
Marker marker = getMap().addMarker(new MarkerOptions().position(new LatLng(place.getLat(), place.getLng())).title(place.getTitle()).snippet(place.getDescription()).icon(icon)); | |
markerPlaces.put(marker, place); | |
getMap().setOnInfoWindowClickListener(new OnInfoWindowClickListener() { | |
@Override | |
public void onInfoWindowClick(Marker marker) { | |
Place place = markerPlaces.get(marker); | |
PlaceDetailActivity.startActivity(getSherlockActivity(), place); | |
} | |
}); | |
} | |
} | |
getMap().setInfoWindowAdapter(new PlaceInfoWindowAdapter(getSherlockActivity(), markerPlaces)); | |
} | |
setRefreshing(false); | |
} | |
@Override | |
public void onLoaderReset(Loader<List<Category>> loader) { | |
} | |
@Override | |
public void onRefresh() { | |
getSherlockActivity().getSupportLoaderManager().restartLoader(LOADER_ID, null, this); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment