web-dev-qa-db-ja.com

GoogleMaps v2 Androidのマイロケーションボタン、表示されない

私はグーグルマップでアプリをやっていますが、参照が機能しないと言うように、「私の場所」ボタンを追加しようとすると...

それが私がする方法です:

_protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

        locManager = (LocationManager)getSystemService(LOCATION_SERVICE);
        providersList = locManager.getAllProviders();
        provider =locManager.getProvider(providersList.get(0));
        precision = provider.getAccuracy();
        req = new Criteria();
        req.setAccuracy(Criteria.ACCURACY_FINE);        
        inside = false;

        map.getUiSettings().setMyLocationButtonEnabled(true);

        buildPolygon();
        drawPolygon();
        startLocalization();
    }
_

Googleのリファレンスで示されているように、map.getUiSettings().setMyLocationButtonEnabled(true);を使用しました。何が起こっているのか分かりません。

30
Shudy

myLocationButtonEnabledはデフォルトでtrueであり、setMyLocationEnabledレイヤーが有効な場合に表示されます。

これを試して:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    // Add this line
    map.setMyLocationEnabled(true);

    locManager = (LocationManager)getSystemService(LOCATION_SERVICE);
    providersList = locManager.getAllProviders();
    provider =locManager.getProvider(providersList.get(0));
    precision = provider.getAccuracy();
    req = new Criteria();
    req.setAccuracy(Criteria.ACCURACY_FINE);        
    inside = false;

    //map.getUiSettings().setMyLocationButtonEnabled(true);

    buildPolygon();
    drawPolygon();
    startLocalization();
}

setMyLocationEnabledドキュメント
setMyLocationButtonEnabledドキュメント

56
jnthnjns

マップを作成した後にmap.setMyLocationEnabled(true);を追加するだけです

map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

このように

map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

map.setMyLocationEnabled(true);
2
Mina Fawzy

私にとっては、map.setMyLocationEnabled(true);
マシュマロ以下のデバイスとマシュマロ以上のデバイスで正常に機能したため、アプリ内設定を手動でロケーション許可を与えました。その後、現在地ボタンが表示されました。

0
creativecoder

上記の答えは機能しませんでした。

override fun onMapReady(googleMap: GoogleMap?) {
    this.googleMap = googleMap

    setupMap()
}

private fun setupMap() {
    if (ActivityCompat.checkSelfPermission(context!!,
            Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        // Before enabling the My Location layer, you must request location permission from the user.
        googleMap?.isMyLocationEnabled = true
        // *** Use this method ***
        googleMap?.uiSettings?.isMyLocationButtonEnabled = true

        // See https://developers.google.com/maps/documentation/Android-sdk/location
        googleMap?.setOnMyLocationButtonClickListener(this)
        googleMap?.setOnMyLocationClickListener(this)
    } else {
        // Show rationale and request permission.
        requestPermissions(arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
            LOCATION_REQUEST_CODE)
    }
}
0
CoolMind