private MapPosition getLocation(Location bestLocation) { byte zoom = mTileMap.getMapPosition().getMapPosition().zoomLevel; float scale = mTileMap.getMapPosition().getMapPosition().scale; if (zoom < 15) { zoom = (byte) 15; scale = 0; } MapPosition mapPosition = new MapPosition(bestLocation.getLatitude(), bestLocation.getLongitude(), zoom, scale, 0); return mapPosition; }
@SuppressWarnings("deprecation") public boolean enableShowMyLocation(boolean centerAtFirstFix) { Log.d("TileMap", "enableShowMyLocation " + mShowMyLocation); gotoLastKnownPosition(); if (!mShowMyLocation) { Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.NO_REQUIREMENT); String bestProvider = mLocationManager.getBestProvider(criteria, true); if (bestProvider == null) { // mTileMap.showDialog(DIALOG_LOCATION_PROVIDER_DISABLED); return false; } mShowMyLocation = true; enableMyLocation(); Log.d("TileMap", "enableShowMyLocation " + mShowMyLocation); mLocationListener.setFirstCenter(centerAtFirstFix); mSnapToLocationView.setVisibility(View.VISIBLE); mTileMap.invalidate(); return true; } return false; }
void gotoLastKnownPosition() { Location currentLocation; Location bestLocation = null; for (String provider : mLocationManager.getProviders(true)) { currentLocation = mLocationManager.getLastKnownLocation(provider); if (currentLocation == null) continue; if (bestLocation == null || currentLocation.getAccuracy() < bestLocation.getAccuracy()) { bestLocation = currentLocation; } } if (bestLocation != null) { MapPosition mapPosition = getLocation(bestLocation); mTileMap.setMapCenter(mapPosition); accuracy = bestLocation.getAccuracy(); mLocation = bestLocation; mTileMap.mapActivity.invalidateMap(); } else { // mTileMap.showToastOnUiThread(mTileMap // .getString(R.string.error_last_location_unknown)); } }
/** * Enables the "snap to location" mode. * * @param showToast defines whether a toast message is displayed or not. */ public void enableSnapToLocation(boolean showToast) { if (!mSnapToLocation) { mSnapToLocation = true; mShowMyLocation = true; mTileMap.setClickable(false); if (showToast) { // mTileMap.showToastOnUiThread(mTileMap // .getString(R.string.snap_to_location_enabled)); } } }
/** * Disables the "snap to location" mode. * * @param showToast defines whether a toast message is displayed or not. */ public void disableSnapToLocation(boolean showToast) { mLocation = null; if (mSnapToLocation) { mSnapToLocation = false; mSnapToLocationView.setChecked(false); mTileMap.setClickable(true); if (showToast) { // mTileMap.showToastOnUiThread(mTileMap // .getString(R.string.snap_to_location_disabled)); } } }