谷歌地图v2 Android版的“我的位置”按钮未显示

33

我正在开发一个应用程序,使用谷歌地图。但是,当我尝试添加“我的位置”按钮时,按照参考文档所说的方式并未生效...

以下是我的代码:

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();
    }

我按照谷歌的参考文献使用了 map.getUiSettings().setMyLocationButtonEnabled(true);,但我不知道出了什么问题。

6个回答

57

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 文档


3
真的!!!天哪...扶额! 非常感谢...现在它完美地运行了。 没有看到这个MyLocationEnale。再次感谢! - Shudy
1
有时候即使是最优秀的人也会发生这样的事情 :)很高兴我能帮上忙。祝你好运! - jnthnjns
1
在我的情况下,添加setMyLocationEnabled(true)并不能帮助我,除非同时通过我的代码获取/监听位置。不知何故,这会触发地图上的蓝点出现。 - Yar

3

在创建地图后,只需添加map.setMyLocationEnabled(true);即可。

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

变成这样

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

map.setMyLocationEnabled(true);

2

0

您需要权限才能使其可见

if (ActivityCompat.checkSelfPermission(Maps_Activity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(Maps_Activity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

   requestPermission();

   return;
}

mMap.setMyLocationEnabled(true);

    

0
对我来说,map.setMyLocationEnabled(true);在6.0以下的设备和6.0以上手动在应用程序设置中授予位置权限后,它可以正常工作。稍后“我的位置”按钮就会出现。

0

以上的答案都不起作用。

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)
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接