2016-06-01 5 views
-1

Mein Code zeigt den Marker meines aktuellen Standorts in Google Maps nicht an. Mit Marshmallow wird nur die Google-KarteMein Code zeigt den Marker meines aktuellen Standorts nicht in Google Maps an. Marshmallow zeigt nur die Google-Karte

angezeigt
package com.example.charan.testing2; 
    import android.Manifest; 
    import android.content.Intent; 
    import android.content.pm.PackageManager; 
    import android.location.Criteria; 
    import android.location.Location; 
    import android.location.LocationListener; 
    import android.location.LocationManager; 
    import android.os.Build; 
    import android.os.PersistableBundle; 
    import android.support.v4.app.ActivityCompat; 
    import android.support.v4.app.FragmentActivity; 
    import android.os.Bundle; 
    import android.support.v4.content.ContextCompat; 
    import android.view.View; 
    import android.widget.TextView; 

    import com.google.android.gms.common.ConnectionResult; 
    import com.google.android.gms.common.GoogleApiAvailability; 
    import com.google.android.gms.maps.CameraUpdateFactory; 
    import com.google.android.gms.maps.GoogleMap; 
    import com.google.android.gms.maps.OnMapReadyCallback; 
    import com.google.android.gms.maps.SupportMapFragment; 
    import com.google.android.gms.maps.model.LatLng; 
    import com.google.android.gms.maps.model.MarkerOptions; 

    public class MainActivity extends FragmentActivity implements OnMapReadyCallback,LocationListener { 

    private GoogleMap mMap; 
    private double latitude ; 
    private double longitude ; 
    private static final int MY_PERMISSION_ACCESS_COARSE_LOCATION = 11; 
    private static final int MY_PERMISSION_ACCESS_FINE_LOCATION = 12; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (!isGooglePlayServicesAvailable()) { 
      finish(); 
     } 
     setContentView(R.layout.activity_main); 

     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.googleMap); 
     mapFragment.getMapAsync(this); 
     mMap.setMyLocationEnabled(true); 

     LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     Criteria criteria = new Criteria(); 
     String bestProvider = locationManager.getBestProvider(criteria, true); 


    //requesting permissions 
     if (Build.VERSION.SDK_INT >= 23 && 
       ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && 
       ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      return ; 
     } 
     if (ContextCompat.checkSelfPermission(this, 
       Manifest.permission.ACCESS_COARSE_LOCATION) 
       != PackageManager.PERMISSION_GRANTED) { 


      if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
        Manifest.permission.ACCESS_COARSE_LOCATION)) { 



      } else { 



       ActivityCompat.requestPermissions(this, 
         new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 
         MY_PERMISSION_ACCESS_COARSE_LOCATION); 

      } 
     } 
     if (ContextCompat.checkSelfPermission(this, 
       Manifest.permission.ACCESS_FINE_LOCATION) 
       != PackageManager.PERMISSION_GRANTED) { 


      if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
        Manifest.permission.ACCESS_FINE_LOCATION)) { 


      } else { 

       // No explanation needed, we can request the permission. 

       ActivityCompat.requestPermissions(this, 
         new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
         MY_PERMISSION_ACCESS_FINE_LOCATION); 


      } 
     } 

     Location location = locationManager.getLastKnownLocation(bestProvider); 
     if(location!=null) 
      onLocationChanged(location); 
     else finish(); 

     locationManager.requestLocationUpdates(bestProvider, 20000, 0, this); 

    } 


    //getmapasync's method 
    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

    } 

//requestlocationupdate's methods 

    @Override 
    public void onLocationChanged(Location location) { 
     TextView locationTv = (TextView) findViewById(R.id.latlongLocation); 
     latitude = location.getLatitude(); 
     longitude = location.getLongitude(); 
     LatLng latLng = new LatLng(latitude, longitude); 
     if (mMap != null) { 
      mMap.addMarker(new MarkerOptions().position(latLng).title("You are here")); 
      mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
      mMap.animateCamera(CameraUpdateFactory.zoomTo(15)); 
      locationTv.setText(getString(R.string.welcome_messages, latitude,longitude)); 
     } 
    } 
    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 
    } 

    //checking availability of google play services 

    private boolean isGooglePlayServicesAvailable() { 
     GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance(); 
     int status = googleAPI.isGooglePlayServicesAvailable(this); 

     if (ConnectionResult.SUCCESS == status) { 
      return true; 
     } else { 
      if (googleAPI.isUserResolvableError(status)) { 
       googleAPI.getErrorDialog(this, status, 0).show(); 
      } 

      return false; 
     } 

    } 
    } 
+0

Haben u unten marshamallow versuchen? – Raghavendra

+0

hat Sie nicht erwischt –

Antwort

0

nutzen Sie CameraPosition

CameraPosition cameraPosition = new CameraPosition.Builder().target(
      new LatLng(latLng)).zoom(15).build(); 

    mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
+0

Verursacht von: java.lang.NullPointerException: Versuch, die virtuelle Methode 'void com.google.android.gms.maps.GoogleMap.setMyLocationEnabled (boolean)' für einen Null-Objektverweis bei com.example aufzurufen. charan.testing2.MainActivity.onCreate (MainActivity.java:49) –

+0

Bekam über Laufzeitfehler –

+0

Der Fehler hat nichts mit 'CameraPosition' zu tun. "GoogleMap mMap" scheint null zu sein. Dies kann selbst dann passieren, wenn die Google Play-Dienste nicht verfügbar/installiert sind. – Balamurugan

Verwandte Themen