Android Maps V2 API中心当前位置在屏幕上

时间:2014-06-27 14:33:26

标签: android android-maps-v2 android-maps android-location

我正在努力完成这个简单的任务,这似乎非常简单,但它仍然没有按照它应该做的那样工作。我使用下面的方法,但手机放大市中心,距我的蓝色位置点约2公里。

public void setUpMap() {
        mGoogleMap.setMyLocationEnabled(true);

        String context = Context.LOCATION_SERVICE;

        LocationManager locationManager = (LocationManager)mContext.getSystemService(context);

        Criteria criteria = new Criteria();
        String provider = locationManager.getBestProvider(criteria, true);
        Location myLocation = locationManager.getLastKnownLocation(provider);

        double latitude = myLocation.getLatitude();
        double longitude = myLocation.getLongitude();

        LatLng latLng = new LatLng(latitude, longitude);

        mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));


    }

我尝试设置不同的缩放值,但没有什么变化。我不确定是否应该设置newLatLngBounds,因为每个人都说这是正确的方法。我似乎没有得到我现在的位置,而是我所在城市的位置。

2 个答案:

答案 0 :(得分:2)

新答案: -

mMap.setMyLocationEnabled(true);

                Location myLocation = mMap.getMyLocation();

                if (myLocation != null) {
                    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
                            new LatLng(myLocation.getLatitude(), myLocation
                                    .getLongitude()), 14));
                }

答案 1 :(得分:1)

这有点太晚了,但有两种方法可以解决这个问题。

FusedLocation API

实施FusedLocation API(请参阅Making Your App Location Aware),将其用于setup a location request并获取位置修复。当您在回调中获得Location对象时,使用它来设置GoogleMap对象中的位置。

@Override
public void onLocationChanged(Location location) {
    mCurrentLocation = location;
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
                    new LatLng(location.getLatitude(), location.getLongitude()), 15));
}

OnMyLocationChangeListener

GoogleMap类有一个OnMyLocationChangeListener,你可以像这样实现一个修复:

mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
        @Override
        public void onMyLocationChange(Location location) {
            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
                    new LatLng(location.getLatitude(), location.getLongitude()), 15));
            mMap.setOnMyLocationChangeListener(null);
        }
    });

问题是,界面为marked as deprecated,Google建议使用FusedLocation API。如果您真的想要,可以使用它,但要注意任何未来的API更改,使其无法使用并破坏您的应用。