web-dev-qa-db-ja.com

map.setmylocationenabled(true)が機能しない

AndroidアプリでGoogleマップを使用しています。クライアントの現在の場所にマップを再配置する必要があります。次のステートメントを使用しました-

map.setmylocationenabled(true);

これにより、右上にボタンが表示されますが、クリックしても機能しません。

ボタンクリックリスナー:

mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
                @Override
                public boolean onMyLocationButtonClick() {
                    mMap.addMarker(new MarkerOptions().position(myLatLng).title("My Location"));
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(myLatLng, zoomLevel));
                    return false;
                }
            });
9
Venu Saini

ここに私のその他の回答 からコードを取得し、ボタンクリックリスナーを変更して別の場所をリクエストします。

         mMap.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
                @Override
                public boolean onMyLocationButtonClick() {
                     if (mGoogleApiClient != null) {
                         LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
                     }
                     return false;
                }
            });

次に、onLocationChanged()のコードでカメラの位置を中央に戻し、位置情報の更新を再度登録解除します。

@Override
public void onLocationChanged(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.newLatLng(latLng));
    mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11));

    if (mGoogleApiClient != null) {
        LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
    }
}
4
Daniel Nugent

最後の行は私にとっての解決策でした:

myMap.setMyLocationEnabled(true);
myMap.getUiSettings().setMyLocationButtonEnabled(true);

setmylocationenabled(true)を使用した後、緯度と経度を取得しようとしましたか?

gMap.setMyLocationEnabled(true);
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
gMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));

これで、緯度と経度を使用して、カメラを取得した緯度/経度の位置にアニメーション化できます。

3
Kristo

setMyLocationEnabled (boolean enabled) を追加する必要があります。

現在地レイヤーを有効または無効にします。

有効になっていて位置が利用可能である間、my-locationレイヤーはユーザーの現在の位置と方位の表示を継続的に描画し、ユーザーが位置と対話できるようにするUIコントロールを表示します(たとえば、ユーザーのカメラ追跡を有効または無効にするため)場所と方位)。

My-location-layer機能を使用するには、カスタムの場所のソースを設定していない限り、ACCESS_COARSE_LOCATIONまたはACCESS_FINE_LOCATIONのいずれかの権限をリクエストする必要があります。

[〜#〜]デモ[〜#〜]

これを onMapReady (GoogleMap googleMap) セクションに追加する必要があります。

 @Override
        public void onMapReady(GoogleMap googleMap) {

            googleMapOBJ = googleMap;
            if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(activity, 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;
            }
            googleMapOBJ.setMyLocationEnabled(true);
            googleMapOBJ.getUiSettings().setMyLocationButtonEnabled(true);
2
IntelliJ Amiya

コトリンウェイ

mMap = googleMap
mMap.isMyLocationEnabled = true
mMap.uiSettings.isMyLocationButtonEnabled = true
0
Aditya Patil