为什么谷歌地图相机不在我的位置?

时间:2016-03-23 04:03:24

标签: android google-maps android-fragments

我在片段android中有谷歌地图的代码,我想在我的位置相机,但相机在其他位置,我不知道为什么会发生这种情况 任何人都可以帮我找出这种情况发生的原因

这是我的片段代码:

public class FragmentMap extends Fragment implements LocationListener {

MapView mapView;
GoogleMap map;
double latitude;
double longitude;
public String bestProvider;
public Criteria criteria;


@Override
public void onLocationChanged(Location location) {

    // Getting latitude of the current location
    latitude = location.getLatitude();

    // Getting longitude of the current location
    longitude = location.getLongitude();

    // Creating a LatLng object for the current location
    LatLng latLng = new LatLng(latitude, longitude);

    // Showing the current location in Google Map
    map.moveCamera(CameraUpdateFactory.newLatLng(latLng));

    // Zoom in the Google Map
    map.animateCamera(CameraUpdateFactory.zoomTo(15));

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {

}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.map_fragment, container, false);

    // Gets the MapView from the XML layout and creates it
    mapView = (MapView) v.findViewById(R.id.mapview);
    mapView.onCreate(savedInstanceState);

    // Gets to GoogleMap from the MapView and does initialization stuff
    map = mapView.getMap();
    map.getUiSettings().setMyLocationButtonEnabled(false);
    map.setMyLocationEnabled(true);


    // Needs to call MapsInitializer before doing any CameraUpdateFactory calls
    MapsInitializer.initialize(this.getActivity());

    // Updates the location and zoom of the MapView
    map.setMyLocationEnabled(true);

    criteria = new Criteria();
    bestProvider = String.valueOf(MainActivity.locationManager.getBestProvider(criteria, true)).toString();
    Location location = MainActivity.locationManager.getLastKnownLocation(bestProvider);

    if (location != null) {
        onLocationChanged(location);
    }

    CameraUpdate cameraUpdate =
            CameraUpdateFactory
                    .newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 16);
    map.animateCamera(cameraUpdate);

    return v;
}

@Override
public void onResume() {
    mapView.onResume();
    super.onResume();
}

@Override
public void onDestroy() {
    super.onDestroy();
    mapView.onDestroy();
}

@Override
public void onLowMemory() {
    super.onLowMemory();
    mapView.onLowMemory();
}

}

这是我的位置声明:

public static LocationManager locationManager;
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

1 个答案:

答案 0 :(得分:1)

你的onlocationchange应该是 -

@Override
public void onLocationChanged(Location location) {

CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(new LatLng(location.getLatitude(), location.getLongitude()))
                .zoom(14)
                .build();

if (map != null) {
    map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}

}

这会将相机移动到您当前的位置。

让我知道它是否适合你。