Android Google地图位置更新无效

时间:2013-10-14 09:46:13

标签: android google-maps

我上次知道的位置没有更新,但googlemap.setMyLocationEnable(true)我的位置正在更新。有人可以帮忙吗?这是我的代码:

private void setUpMap() {

    if(googlemap == null) {

        googlemap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();

        if(googlemap != null) {         
            googlemap.setMyLocationEnabled(true);

            LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);

            String provider = lm.getBestProvider(new Criteria(), true);

            if (provider == null){
                onProviderDisabled(provider);
            }

            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
            Location loc = lm.getLastKnownLocation(provider);

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

            googlemap.setOnMapLongClickListener(onLongClickMapSettings());
        }
    }
}

private OnMapLongClickListener onLongClickMapSettings() {
    // TODO Auto-generated method stub
    return new OnMapLongClickListener() {

        @Override
        public void onMapLongClick(LatLng arg0) {
            // TODO Auto-generated method stub
            Log.i(arg0.toString(), "User long clicked");
        }
    };
}

@Override
public void onLocationChanged(Location location) {
    // TODO Auto-generated method stub
    LatLng latlng = new LatLng(location.getLatitude(), location.getLongitude());

    googlemap.moveCamera(CameraUpdateFactory.newLatLng(latlng));
    googlemap.animateCamera(CameraUpdateFactory.zoomTo(15));

    Marker ME = googlemap.addMarker(new MarkerOptions()
    .position(latlng)
    .title("Current Location(You)")
    .snippet("Current")
    .icon(BitmapDescriptorFactory.fromResource(R.drawable.user_marker)));

}

1 个答案:

答案 0 :(得分:1)

我认为你在Android上混合了使用谷歌地图的新旧方式。

如果您使用新方法(推荐使用v2),则不必实例化LocationManager,然后请求更新位置。

请在官方文档中查看如何以正确方式执行操作:https://developer.android.com/training/location/receive-location-updates.html

您只需实施LocationListener,当然,当您创建LocationRequest对象时,请根据您的需要设置正确的参数。

如果您没有使用适用于Android的API的v2版本,建议您从https://developer.android.com/google/play-services/location.html开始执行此操作。