有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android地图未根据位置变化作出响应

我已经调试这段代码很长时间了,但无法完成。我得到了正确的经度&;Latitude在listener中,但无法相应地更新地图,有人能帮我吗

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) 个答案

  1. # 1 楼答案

    @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();
                }
    
  2. # 2 楼答案

    如需添加新标记

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