java - onLocationChanged() 中的 map.moveCamera

标签 java android

我遇到了这样的问题:我在我的应用程序中的 Fragment 中使用 GoogleMaps map ,并且在调用 onLocationChanged 方法时它会中断。 问题是这一行

mMap.moveCamera(CameraUpdatesFactory.newLatLngZoom(position, 15);

可能是因为它找不到 mMap 或者我不知道。 这是代码部分:

public class home extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener{

GoogleMap mMap;
Marker marker;

private void checkAndStartLocationUpdate() {
    if (permissionGranted && googleApiClientReady) {
        Log.d("MainActivity", "Start updating location");
        LocationRequest mLocationRequest = new LocationRequest();
        mLocationRequest.setInterval(10000);
        mLocationRequest.setFastestInterval(5000);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        try {

            LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);

            lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);

            location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

        } catch (SecurityException e) {
            e.printStackTrace();
        }
    }
}

public void onLocationChanged(Location location) {

    Log.d("MainActivity", "Location update received: " + location.toString());

    latitude = location.getLatitude();
    longitude = location.getLongitude();

    Log.d("MainActivity", longitude + " " + latitude);

    LatLng position = new LatLng(longitude, latitude);
    marker.setPosition(position);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 15));

}

最佳答案

你可以做任何一个

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

    // Tika
    // Tika
    // Tika
}

并改变

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 15));

if(mMap != null)
   mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 15));

或者您可以简单地调用

    LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);

onMapReady内部之后mMap = googleMap;

关于java - onLocationChanged() 中的 map.moveCamera,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51539209/

相关文章:

java - 在构建错误后从 ANT 停止的地方继续

android - 如何使用 ABC 顺序的方法创建 JavaDoc

android - 如何在 TableLayout 中添加 editText.addTextChangedListener

java - if taglib 与 forEach jSTL 的两项进行比较

java - "Registered factory needed"加载资源时出现异常

javascript - 使用 $resource 发送音频数据 (base64)

android - 运行 Junit 5 Android 测试时 Unresolved 引用 jupiter 和 assertTrue

android - Xamarin.UITests Android 设备未检测到或不工作

java - 有没有办法猜测使用哪种算法生成哈希 key ?

java - 是否有任何基于 SAX 的 GWT 解析器