package com.test.testprojectopenstreetmap; import java.io.File; import com.android.lib.map.osm.OsmMapView; import com.android.lib.map.osm.controller.IMapInteractionListener; import com.android.lib.map.osm.helpers.OsmDatabaseHelper; import com.android.lib.map.osm.models.OsmModel; import com.android.lib.map.osm.overlay.MapMarker; import com.android.lib.map.osm.overlay.OsmLocationOverlay; import com.test.testprojectopenstreetmap.LocationListenerHelper.IMyLocationListener; import android.location.Location; import android.os.Bundle; import android.app.Activity; import android.graphics.Canvas; import android.view.MotionEvent; import android.view.ViewGroup; import android.widget.RelativeLayout; public class MapActivity extends Activity implements IMapInteractionListener, IMyLocationListener { private LocationListenerHelper mLocationListener; private OsmMapView mOsmMapView; private OsmLocationOverlay mOsmLocationOverlay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLocationListener = new LocationListenerHelper(this); initOsmDatabase(); initMap(); } @Override protected void onResume() { super.onResume(); mLocationListener.startListeningLocation(this); } @Override protected void onPause() { super.onPause(); mLocationListener.stopListeningLocation(); } @Override protected void onDestroy() { mOsmMapView.clear(); super.onDestroy(); } private void initMap() { OsmMapView.OsmMapViewBuilder mapBuilder = new OsmMapView.OsmMapViewBuilder(); mapBuilder.setIsNetworkRequestAllowed(true); mapBuilder.setPositionIndicatorDrawableId(R.drawable.blue_position_indicator); mOsmMapView = new OsmMapView(getApplicationContext(), mapBuilder, this); mOsmLocationOverlay = new OsmLocationOverlay(getApplicationContext(), mapBuilder, mOsmMapView); mOsmMapView.addOverlay(mOsmLocationOverlay); ViewGroup mapLayout = (ViewGroup) findViewById(R.id.mapLayout); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT); mapLayout.addView(mOsmMapView, layoutParams); mOsmMapView.setCenter(37.7793, -122.4192); mOsmMapView.setZoom(12); } private void initOsmDatabase() { File destFile = new File(getFilesDir(), "osm_db.sqlite"); OsmDatabaseHelper osmDbHelper = new OsmDatabaseHelper(this); osmDbHelper.setDatabaseFile(destFile); boolean success = osmDbHelper.openOrCreateDatabase(this, destFile); if (success) { OsmModel.mDbHelper = osmDbHelper; } } @Override public boolean onMapTouchEvent(MotionEvent event) { return false; } @Override public void onMapDraw(Canvas canvas) { } @Override public void onMapSingleTapConfirmed(MotionEvent event) { } @Override public void onMapStopPanning() { } @Override public void onMapZoomChanged(int zoomLevel) { } @Override public void onMapLongClick(MotionEvent event) { } @Override public void onMapMarkerTap(MapMarker overlayItem) { } @Override public void onMapCalloutTap(MotionEvent event) { } @Override public void onNewLocation(Location location) { if (mOsmLocationOverlay != null && location != null) { mOsmLocationOverlay.setLocation(location); } } }