根据位置更改,Android地图不响应

时间:2015-09-09 07:31:41

标签: java android

我一直在调试这段代码,但是无法实现。我得到了正确的经度&听众的纬度,但无法相应地更新地图,任何人都可以帮助我。

public class MapActivity extends FragmentActivity implements OnMapReadyCallback {

    protected GoogleMap mMap;

    protected LocationManager locationManager;
    protected LocationListener locationListener;
    private double latitude, longitude;

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

        getLocation();

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

    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
    //    Toast.makeText(getApplicationContext(),"Latitude:" + latitude + ", Longitude:" + longitude,Toast.LENGTH_SHORT).show();
        LatLng delhiIndia = new LatLng(latitude,longitude);
        mMap.addMarker(new MarkerOptions().position(delhiIndia).title("Delhi--India"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(delhiIndia));
    }

    public void getLocation(){
        locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
        locationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                latitude=location.getLatitude();
                longitude =location.getLongitude();
                Toast.makeText(getApplicationContext(),"Latitude:" + latitude + ", Longitude:" + longitude,Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                Log.d("Latitude","status");
            }
            @Override
            public void onProviderEnabled(String provider) {
                Log.d("Latitude","enable");
            }
            @Override
            public void onProviderDisabled(String provider) {
                Log.d("Latitude", "disable");
            }
        };
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
        //locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
    }
}

请有人帮我跟踪这个问题。

2 个答案:

答案 0 :(得分:0)

@Override
            public void onLocationChanged(Location location) {
                latitude=location.getLatitude();
                longitude =location.getLongitude();
             CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(new LatLng(latitude, longitude)).zoom(3.3f).build();

            mMap.animateCamera(CameraUpdateFactory
            .newCameraPosition(cameraPosition));
                Toast.makeText(getApplicationContext(),"Latitude:" + latitude + ", Longitude:" + longitude,Toast.LENGTH_SHORT).show();
            }

答案 1 :(得分:0)

添加新标记

mMap.clear();
MarkerOptions marker = new MarkerOptions()
                .position(new LatLng(latitude, longitude))
                .title("My Position")
                .icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_GREEN));

                mMap.addMarker(marker);