2017-04-04 4 views
0

の作業ではない、私はコードGoogleマップのジオロケーション、私はAndroid上でGoogleマップ内のオートロケーション機能を有効にしようとしています

mMap.setMyLocationEnabled(true)を追加しました。 mMap.getUiSettings()。setMyLocationButtonEnabled(true);任意のヘルプが

package com.example.runnable; 

import android.Manifest; 
import android.content.pm.PackageManager; 
import android.location.Criteria; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.app.FragmentActivity; 

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; 

import static com.example.runnable.R.id.map; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 



    } 


    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     // Add a marker in Sydney and move the camera 
     mMap.addMarker(new MarkerOptions().position(new LatLng(54.581765, -5.937637)).title("Marker")); 



     // Enabling MyLocation Layer of Google Map 
     googleMap.setMyLocationEnabled(true); 

     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      // TODO: Consider calling 
      // ActivityCompat#requestPermissions 
      // here to request the missing permissions, and then overriding 
      // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      //           int[] grantResults) 
      // to handle the case where the user grants the permission. See the documentation 
      // for ActivityCompat#requestPermissions for more details. 
      return; 
     } 
     mMap.setMyLocationEnabled(true); 
     mMap.getUiSettings().setMyLocationButtonEnabled(true); 

    } 

} 
+0

を高く評価され、機能を有効にするが、場所のための青い点が表示されません

あなたがマニフェストに権限を追加しました。 – DkThakur

+0

あなたはAPIキーを入手しましたか? FINE&COARSE LOCATIONのマニフェストでパーミッションを宣言しましたか? – AwaisMajeed

+0

はい、すべての権限がマニフェストに追加されました。私はAPIとマニフェストのキーも持っています! –

答えて

0
private static final int REQUEST_FINE_LOCATION = 1001; 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    // Add a marker in Sydney and move the camera 
    mMap.addMarker(new MarkerOptions().position(new LatLng(54.581765, -5.937637)).title("Marker")); 
    checkLocationPermission(); 
} 

protected void checkLocationPermission() { 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED 
     || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
    this.googleMap.setMyLocationEnabled(true); 
    } 
    else { 
    requestFineLocationPermission(); 
    } 
} 

protected void requestFineLocationPermission() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) { 
     Toast.makeToast(this, "Provide Location Permission", Toast.LENGTH_LONG).show(); 
    } 
    else { 
     requestPermissions(new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, REQUEST_FINE_LOCATION); 
    } 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
    case REQUEST_FINE_LOCATION: 
     checkLocationPermission(); 
    } 
} 
+0

これを試しても動作しない、マップはまだ動作しますが、表示された場所ボタンは表示されません –

+0

アプリをアンインストールしてもう一度インストールできますか? そうしないと、アプリケーションから手動で設定からこれらのアクセス許可を有効にする必要があります。 – CodeCameo

0
private GoogleMap.OnMyLocationChangeListener myLocationChangeListener =  new GoogleMap.OnMyLocationChangeListener() { 
@Override 
public void onMyLocationChange(Location location) { 
mLastLocation = location; 
if (mCurrLocationMarker != null) { 
    mCurrLocationMarker.remove(); 
} 

//Place current location marker 
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
MarkerOptions markerOptions = new MarkerOptions(); 
markerOptions.position(latLng); 
markerOptions.title("Current Position"); 
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)); 
mCurrLocationMarker = mGoogleMap.addMarker(markerOptions); 

//move map camera 
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,11)); 

//optionally, stop location updates if only current location is needed 
if (mGoogleApiClient != null) { 
    LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
    } 

    } 
}; 
関連する問題