相机不跟随用户在谷歌地图中的当前位置

琼·P。

我有以下代码,当我启动应用程序时,我可以用它来显示我的当前位置。

public class MainActivity extends AppCompatActivity implements LocationListener {
   //private fields

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

        if (isGooglePlayServicesOk()) {
            getLocationPermissions();
        }
    }

    @Override
    public void onLocationChanged(Location location) {
        this.location = location;
    //NO TOAST MESSAGE - NOTHING HAPPENS <=============
    Toast.makeText(context, location.getLatitude() + " / " + location.getLongitude(), Toast.LENGTH_SHORT).show();
    }

    //Other three empty methods onStatusChanged, onProviderEnabled and onProviderDisabled

    private void getDeviceLocation() {
        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);

        try {
            if (locationPermissionsGranted) {
                Task task = fusedLocationProviderClient.getLastLocation();
                task.addOnCompleteListener(new OnCompleteListener() {
                    @Override
                    public void onComplete(@NonNull Task task) {
                        if (task.isSuccessful()) {
                            location = (Location) task.getResult();
                            LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 18f));
                        }
                    }
                });
            }
        } catch (SecurityException se) {
            Log.d(TAG, se.getMessage());
        }
    }

    public boolean isGooglePlayServicesOk() {
        //Method that check Google Play Services
    }

    private void initializeMap() {
        SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        supportMapFragment.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(GoogleMap googleMap) {
                mMap = googleMap;

                if (locationPermissionsGranted) {
                    getDeviceLocation();
                    if (/* Manifest Conditions */) {return;}
                    mMap.setMyLocationEnabled(true);
                }
            }
        });
    }

    private void getLocationPermissions() {
        String[] permissions = {COARSE_LOCATION, FINE_LOCATION};
        if (ContextCompat.checkSelfPermission(this.getApplicationContext(), COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
            if (ContextCompat.checkSelfPermission(this.getApplicationContext(), FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                locationPermissionsGranted = true;
                initializeMap();
            } else {
                ActivityCompat.requestPermissions(this, permissions, LOCATION_PERMISSION_REQUEST_CODE);
            }
        } else {
            ActivityCompat.requestPermissions(this, permissions, LOCATION_PERMISSION_REQUEST_CODE);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        locationPermissionsGranted = false;

        switch (requestCode) {
            case LOCATION_PERMISSION_REQUEST_CODE: {
                if (grantResults.length > 0) {
                    for (int grantResult : grantResults) {
                        if (grantResult != PackageManager.PERMISSION_GRANTED) {
                            locationPermissionsGranted = false;
                            return;
                        }
                    }
                    locationPermissionsGranted = true;
                    initializeMap();
                }
            }
        }
    }
}

所以每次我移动时,我都不会保持在地图的中心。要将我再次置于地图的中心,我需要按下位置按钮。我已经onLocationChanged()LocationListener接口实现了方法,但没有任何反应。甚至不显示 Toast 消息。我怎样才能解决这个问题,所以无论我走到哪里,始终保持在地图的中心?

提前致谢!

埃塞尔瓦尔

正如你在下面这个教程来实现的位置,因为在它的末尾提到,您需要按照这个用新的位置更新。

创建回调:

mLocationCallback = new LocationCallback() {
  @Override
  public void onLocationResult(LocationResult locationResult) {
      if (locationResult == null) {
          return;
      }
      for (Location location : locationResult.getLocations()) {
          // Update UI with location data
          // ...
      }
  };
};

设置监听器/回调:

mFusedLocationClient.requestLocationUpdates(mLocationRequest,
  mLocationCallback,
  null /* Looper */);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在我的当前位置设置标记并更改百度地图中的相机位置(目标c)

来自分类Dev

在地图上用户当前位置添加相机

来自分类Dev

相机不跟随玩家

来自分类Dev

如何让谷歌地图api获取用户的当前位置以将其存储在数据库中?

来自分类Dev

如何在Xcode的地图中显示我的当前位置?

来自分类Dev

在Google地图中显示我的当前位置

来自分类Dev

按钮单击在谷歌地图中显示当前位置

来自分类Dev

在谷歌地图中使用双指以当前位置为地图中心放大和缩小

来自分类Dev

谷歌地图当前位置NullPointerException

来自分类Dev

Android 地图 - 如何自动将地图居中到用户的当前位置?

来自分类Dev

PHP的卷曲不跟随位置

来自分类Dev

卷曲后不跟随位置

来自分类Dev

如何将地图的位置保持在KML层而不是用户的当前位置?

来自分类Dev

如何在谷歌地图中平滑移动当前位置?

来自分类Dev

雨雷达在谷歌地图中的位置

来自分类Dev

javascript无法在使用KML层的Google地图上显示用户的当前位置?

来自分类Dev

将谷歌地图设置为当前位置

来自分类Dev

无法使用谷歌地图获取当前位置

来自分类Dev

是否可以将地图视图放置在用户当前位置不在视图中心的位置?

来自分类Dev

如何查看用户的当前位置?

来自分类Dev

地图视图-移动地图视图后的当前位置

来自分类Dev

谷歌地图-以用户位置为中心

来自分类Dev

获取用户的谷歌地图位置

来自分类Dev

如何将用户的当前位置与其他位置进行比较,并在UITable视图中显示它们?

来自分类Dev

Unity 对象不跟随鼠标位置

来自分类Dev

Skobbler地图中的默认当前位置图钉

来自分类Dev

在Google地图中仅显示一次当前用户位置

来自分类Dev

如何使用Skobbler缩放到地图上的当前位置

来自分类Dev

需要Android中用户的当前位置,而不是最近的位置

Related 相关文章

  1. 1

    如何在我的当前位置设置标记并更改百度地图中的相机位置(目标c)

  2. 2

    在地图上用户当前位置添加相机

  3. 3

    相机不跟随玩家

  4. 4

    如何让谷歌地图api获取用户的当前位置以将其存储在数据库中?

  5. 5

    如何在Xcode的地图中显示我的当前位置?

  6. 6

    在Google地图中显示我的当前位置

  7. 7

    按钮单击在谷歌地图中显示当前位置

  8. 8

    在谷歌地图中使用双指以当前位置为地图中心放大和缩小

  9. 9

    谷歌地图当前位置NullPointerException

  10. 10

    Android 地图 - 如何自动将地图居中到用户的当前位置?

  11. 11

    PHP的卷曲不跟随位置

  12. 12

    卷曲后不跟随位置

  13. 13

    如何将地图的位置保持在KML层而不是用户的当前位置?

  14. 14

    如何在谷歌地图中平滑移动当前位置?

  15. 15

    雨雷达在谷歌地图中的位置

  16. 16

    javascript无法在使用KML层的Google地图上显示用户的当前位置?

  17. 17

    将谷歌地图设置为当前位置

  18. 18

    无法使用谷歌地图获取当前位置

  19. 19

    是否可以将地图视图放置在用户当前位置不在视图中心的位置?

  20. 20

    如何查看用户的当前位置?

  21. 21

    地图视图-移动地图视图后的当前位置

  22. 22

    谷歌地图-以用户位置为中心

  23. 23

    获取用户的谷歌地图位置

  24. 24

    如何将用户的当前位置与其他位置进行比较,并在UITable视图中显示它们?

  25. 25

    Unity 对象不跟随鼠标位置

  26. 26

    Skobbler地图中的默认当前位置图钉

  27. 27

    在Google地图中仅显示一次当前用户位置

  28. 28

    如何使用Skobbler缩放到地图上的当前位置

  29. 29

    需要Android中用户的当前位置,而不是最近的位置

热门标签

归档