55import android .content .DialogInterface ;
66import android .graphics .Bitmap ;
77import android .graphics .BitmapFactory ;
8- import android .graphics .drawable .VectorDrawable ;
98import android .location .Location ;
109import android .location .LocationListener ;
1110import android .location .LocationManager ;
1413import android .os .Handler ;
1514import android .support .annotation .NonNull ;
1615import android .support .annotation .Nullable ;
17- import android .support .graphics .drawable .VectorDrawableCompat ;
1816import android .support .v4 .app .Fragment ;
19- import android .support .v4 .content . ContextCompat ;
17+ import android .support .v4 .app . FragmentActivity ;
2018import android .support .v7 .app .AlertDialog ;
2119import android .support .v7 .app .AppCompatActivity ;
22- import android .support .v7 .content .res .AppCompatResources ;
2320import android .text .TextUtils ;
2421import android .util .DisplayMetrics ;
2522import android .view .LayoutInflater ;
3229import android .widget .Toast ;
3330
3431import org .nitri .opentopo .overlay .OverlayHelper ;
35- import org .osmdroid .config .Configuration ;
3632import org .osmdroid .events .DelayedMapListener ;
3733import org .osmdroid .events .MapListener ;
3834import org .osmdroid .events .ScrollEvent ;
3935import org .osmdroid .events .ZoomEvent ;
40- import org .osmdroid .tileprovider .tilesource .OnlineTileSourceBase ;
4136import org .osmdroid .tileprovider .tilesource .TileSourceFactory ;
42- import org .osmdroid .tileprovider .tilesource .XYTileSource ;
4337import org .osmdroid .util .GeoPoint ;
4438import org .osmdroid .views .MapView ;
4539import org .osmdroid .views .overlay .ScaleBarOverlay ;
4943import org .osmdroid .views .overlay .mylocation .GpsMyLocationProvider ;
5044import org .osmdroid .views .overlay .mylocation .MyLocationNewOverlay ;
5145
52- import java .io .File ;
5346import java .util .Objects ;
5447
5548import io .ticofab .androidgpxparser .parser .domain .Gpx ;
@@ -102,8 +95,7 @@ public MapFragment() {
10295 }
10396
10497 public static MapFragment newInstance () {
105- MapFragment fragment = new MapFragment ();
106- return fragment ;
98+ return new MapFragment ();
10799 }
108100
109101 @ Override
@@ -113,65 +105,69 @@ public void onCreate(Bundle savedInstanceState) {
113105 }
114106
115107 @ Override
116- public View onCreateView (LayoutInflater inflater , ViewGroup container ,
108+ public View onCreateView (@ NonNull LayoutInflater inflater , ViewGroup container ,
117109 Bundle savedInstanceState ) {
118110 View view = inflater .inflate (R .layout .fragment_map , container , false );
119111 mMapView = view .findViewById (R .id .mapview );
120112
121113 final DisplayMetrics dm = this .getResources ().getDisplayMetrics ();
122114
123- mCompassOverlay = new CompassOverlay (getActivity (), new InternalCompassOrientationProvider (getActivity ()),
124- mMapView );
125- mLocationOverlay = new MyLocationNewOverlay (new GpsMyLocationProvider (getActivity ()),
126- mMapView );
115+ FragmentActivity activity = getActivity ();
127116
128- Bitmap bmCrosshairs = BitmapFactory .decodeResource (getResources (),
129- R .drawable .ic_crosshairs );
117+ if (activity != null ) {
118+ mCompassOverlay = new CompassOverlay (getActivity (), new InternalCompassOrientationProvider (getActivity ()),
119+ mMapView );
120+ mLocationOverlay = new MyLocationNewOverlay (new GpsMyLocationProvider (getActivity ()),
121+ mMapView );
130122
131- mLocationOverlay . setPersonIcon ( bmCrosshairs );
132- mLocationOverlay . setPersonHotspot ( bmCrosshairs . getWidth () / 2 , bmCrosshairs . getHeight () / 2 );
123+ Bitmap bmCrosshairs = BitmapFactory . decodeResource ( getResources (),
124+ R . drawable . ic_crosshairs );
133125
134- mScaleBarOverlay = new ScaleBarOverlay (mMapView );
135- mScaleBarOverlay .setCentred (true );
136- mScaleBarOverlay .setScaleBarOffset (dm .widthPixels / 2 , 10 );
126+ mLocationOverlay .setPersonIcon (bmCrosshairs );
127+ mLocationOverlay .setPersonHotspot (bmCrosshairs .getWidth () / 2 , bmCrosshairs .getHeight () / 2 );
137128
138- mRotationGestureOverlay = new RotationGestureOverlay (mMapView );
139- mRotationGestureOverlay .setEnabled (true );
129+ mScaleBarOverlay = new ScaleBarOverlay (mMapView );
130+ mScaleBarOverlay .setCentred (true );
131+ mScaleBarOverlay .setScaleBarOffset (dm .widthPixels / 2 , 10 );
140132
141- mMapView .getController ().setZoom (15d );
142- mMapView .setMaxZoomLevel (17d );
143- mMapView .setTilesScaledToDpi (true );
144- mMapView .setBuiltInZoomControls (true );
145- mMapView .setMultiTouchControls (true );
146- mMapView .setFlingEnabled (true );
147- mMapView .getOverlays ().add (this .mLocationOverlay );
148- mMapView .getOverlays ().add (this .mCompassOverlay );
149- mMapView .getOverlays ().add (this .mScaleBarOverlay );
133+ mRotationGestureOverlay = new RotationGestureOverlay (mMapView );
134+ mRotationGestureOverlay .setEnabled (true );
150135
151- mMapView .setTileSource (TileSourceFactory .OpenTopo );
136+ mMapView .getController ().setZoom (15d );
137+ mMapView .setMaxZoomLevel (17d );
138+ mMapView .setTilesScaledToDpi (true );
139+ mMapView .setBuiltInZoomControls (true );
140+ mMapView .setMultiTouchControls (true );
141+ mMapView .setFlingEnabled (true );
142+ mMapView .getOverlays ().add (this .mLocationOverlay );
143+ mMapView .getOverlays ().add (this .mCompassOverlay );
144+ mMapView .getOverlays ().add (this .mScaleBarOverlay );
152145
153- //final OnlineTileSourceBase localTopo = new XYTileSource("OpenTopoMap", 0, 19, 256, ".png",
154- // new String[]{"http://192.168.2.108/hot/"}, "Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)");
155- //mMapView.setTileSource(localTopo);
146+ mMapView .setTileSource (TileSourceFactory .OpenTopo );
156147
157- String copyRightNotice = mMapView .getTileProvider ().getTileSource ().getCopyrightNotice ();
158- TextView copyRightView = view .findViewById (R .id .copyrighView );
148+ //final OnlineTileSourceBase localTopo = new XYTileSource("OpenTopoMap", 0, 19, 256, ".png",
149+ // new String[]{"http://192.168.2.108/hot/"}, "Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)");
150+ //mMapView.setTileSource(localTopo);
159151
160- if (!TextUtils .isEmpty (copyRightNotice )) {
161- copyRightView .setText (copyRightNotice );
162- copyRightView .setVisibility (View .VISIBLE );
163- } else {
164- copyRightView .setVisibility (View .GONE );
165- }
152+ String copyRightNotice = mMapView .getTileProvider ().getTileSource ().getCopyrightNotice ();
153+ TextView copyRightView = view .findViewById (R .id .copyrighView );
166154
167- mMapView .addMapListener (new DelayedMapListener (mDragListener ));
155+ if (!TextUtils .isEmpty (copyRightNotice )) {
156+ copyRightView .setText (copyRightNotice );
157+ copyRightView .setVisibility (View .VISIBLE );
158+ } else {
159+ copyRightView .setVisibility (View .GONE );
160+ }
168161
169- mLocationOverlay .enableMyLocation ();
170- mLocationOverlay .enableFollowLocation ();
171- mLocationOverlay .setOptionsMenuEnabled (true );
172- mCompassOverlay .enableCompass ();
173- mMapView .setVisibility (View .VISIBLE );
174- mOverlayHelper = new OverlayHelper (getActivity (), mMapView );
162+ mMapView .addMapListener (new DelayedMapListener (mDragListener ));
163+
164+ mLocationOverlay .enableMyLocation ();
165+ mLocationOverlay .enableFollowLocation ();
166+ mLocationOverlay .setOptionsMenuEnabled (true );
167+ mCompassOverlay .enableCompass ();
168+ mMapView .setVisibility (View .VISIBLE );
169+ mOverlayHelper = new OverlayHelper (getActivity (), mMapView );
170+ }
175171
176172 return view ;
177173 }
@@ -221,6 +217,7 @@ public void onPause() {
221217 try {
222218 mLocationManager .removeUpdates (this );
223219 } catch (Exception ex ) {
220+ ex .printStackTrace ();
224221 }
225222
226223 mMapHandler .removeCallbacks (mCenterRunnable );
@@ -242,13 +239,13 @@ public void onResume() {
242239 mLocationManager = (LocationManager ) getActivity ().getSystemService (Context .LOCATION_SERVICE );
243240 if (mLocationManager != null ) {
244241 try {
245- mLocationManager .requestLocationUpdates (LocationManager .GPS_PROVIDER , 0l , 0f , this );
242+ mLocationManager .requestLocationUpdates (LocationManager .GPS_PROVIDER , 0L , 0f , this );
246243 } catch (Exception ex ) {
247244 ex .printStackTrace ();
248245
249246 }
250247 try {
251- mLocationManager .requestLocationUpdates (LocationManager .NETWORK_PROVIDER , 0l , 0f , this );
248+ mLocationManager .requestLocationUpdates (LocationManager .NETWORK_PROVIDER , 0L , 0f , this );
252249 } catch (Exception ex ) {
253250 ex .printStackTrace ();
254251 }
0 commit comments