VenueMapActivity.java :  » Foursquare » foursquared » com » joelapenna » foursquared » Android Open Source

Android Open Source » Foursquare » foursquared 
foursquared » com » joelapenna » foursquared » VenueMapActivity.java
/**
 * Copyright 2009 Joe LaPenna
 */

package com.joelapenna.foursquared;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.joelapenna.foursquare.types.Group;
import com.joelapenna.foursquare.types.Venue;
import com.joelapenna.foursquare.util.VenueUtils;
import com.joelapenna.foursquared.maps.CrashFixMyLocationOverlay;
import com.joelapenna.foursquared.maps.VenueItemizedOverlay;
import com.joelapenna.foursquared.util.UiUtil;

import android.os.Bundle;
import android.util.Log;

/**
 * @author Joe LaPenna (joe@joelapenna.com)
 */
public class VenueMapActivity extends MapActivity {
    public static final String TAG = "VenueMapActivity";
    public static final boolean DEBUG = FoursquaredSettings.DEBUG;
    
    public static final String INTENT_EXTRA_VENUE = Foursquared.PACKAGE_NAME
            + ".VenueMapActivity.INTENT_EXTRA_VENUE";
 
    private MapView mMapView;
    private MapController mMapController;
    private VenueItemizedOverlay mOverlay = null;
    private MyLocationOverlay mMyLocationOverlay = null;
    
    private StateHolder mStateHolder;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.venue_map_activity);
        
        Object retained = getLastNonConfigurationInstance();
        if (retained != null && retained instanceof StateHolder) {
            mStateHolder = (StateHolder) retained;
        } else {
            mStateHolder = new StateHolder();
            if (getIntent().hasExtra(INTENT_EXTRA_VENUE)) {
              mStateHolder.setVenue((Venue)getIntent().getExtras().getParcelable(INTENT_EXTRA_VENUE));
            } else {
                Log.e(TAG, "VenueMapActivity requires a venue parcel its intent extras.");
                finish();
                return;
            }
        }
        
        ensureUi();
    }
    
    private void ensureUi() {

        /*
        Button mapsButton = (Button) findViewById(R.id.mapsButton);
        mapsButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse( //
                        "geo:0,0?q=" + mStateHolder.getVenue().getName() + " near " + 
                        mStateHolder.getVenue().getCity()));
                startActivity(intent);
            }
        });
        
        if (FoursquaredSettings.SHOW_VENUE_MAP_BUTTON_MORE == false) {
            mapsButton.setVisibility(View.GONE);
        }
        */
        
        setTitle(getString(R.string.venue_map_activity_title, mStateHolder.getVenue().getName()));

        mMapView = (MapView) findViewById(R.id.mapView);
        mMapView.setBuiltInZoomControls(true);
        mMapController = mMapView.getController();

        mMyLocationOverlay = new CrashFixMyLocationOverlay(this, mMapView);
        mMapView.getOverlays().add(mMyLocationOverlay);

        mOverlay = new VenueItemizedOverlay(this.getResources().getDrawable(
                R.drawable.map_marker_blue));
        
        if (VenueUtils.hasValidLocation(mStateHolder.getVenue())) {
          Group<Venue> venueGroup = new Group<Venue>();
          venueGroup.setType("Current Venue");
          venueGroup.add(mStateHolder.getVenue());
            mOverlay.setGroup(venueGroup);
            mMapView.getOverlays().add(mOverlay);
        }
        
        updateMap();
    }
    
    @Override
    public void onResume() {
        super.onResume();
        mMyLocationOverlay.enableMyLocation();
        if (UiUtil.sdkVersion() > 3) {
          mMyLocationOverlay.enableCompass();
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        mMyLocationOverlay.disableMyLocation();
        mMyLocationOverlay.disableCompass();
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }

    private void updateMap() {
        if (mOverlay != null && mOverlay.size() > 0) {
            GeoPoint center = mOverlay.getCenter();
            mMapController.animateTo(center);
            mMapController.setZoom(17);
        }
    }

    private static class StateHolder {
        
        private Venue mVenue;
        
        public StateHolder() {
        }
 
        public Venue getVenue() {
            return mVenue;
        }
        
        public void setVenue(Venue venue) {
          mVenue = venue;
        }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.