0

我正在尝试为一个 android 项目找到我当前的位置。加载应用程序时,我的当前位置始终为空。我已经在清单等中设置了权限。当我找到当前位置时,我打算使用坐标来查找到地图上其他位置的距离。我的代码片段如下。为什么我总是得到一个空值?这是我的代码:-

    package com.example.location;
    import android.content.Context;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.location.Location;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapView;
    import android.location.LocationListener;
    import com.google.android.maps.MapController;
    import android.widget.Toast;
    import com.google.android.maps.GeoPoint;

    public class MainActivity extends MapActivity implements LocationListener {

        private MapView mapView;
        private LocationManager locManager;

        @Override
        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main);

            //fetch the map view from the layout
            MapView mapView = (MapView) findViewById(R.id.mapview);

            //make available zoom controls 
            mapView.setBuiltInZoomControls(true);
            //latitude and longitude of Rome
            double lat = 33.6667;
            double lon = 73.1667;

            //create geo point
            GeoPoint point = new GeoPoint((int)(lat * 1E6), (int)(lon *1E6));

            //get the MapController object
            MapController controller = mapView.getController();

            //animate to the desired point
            controller.animateTo(point); 

            //set the map zoom to 13
            // zoom 1 is top world view
            controller.setZoom(13);

            // invalidate the map in order to show changes
            **mapView.invalidate();
            // Use the location manager through GPS
            locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0,
                    0, this);
            //get the current location (last known location) from the location manager
            Location location = locManager
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

            if (location != null) {

                Toast.makeText(
                        this,
                        "Current location:\nLatitude: " + location.getLatitude()
                                + "\n" + "Longitude: " + location.getLongitude(),
                        Toast.LENGTH_LONG).show(); }
                else {

                    Toast.makeText(this, "Cannot fetch current location!",
                            Toast.LENGTH_LONG).show();
                }**
              //when the current location is found – stop listening for updates (preserves battery)
                locManager.removeUpdates(this);
        }

        @Override
        protected boolean isRouteDisplayed() {

            return false;

        }
        @Override
        protected void onPause() {
            super.onPause();
            locManager.removeUpdates(this); //activity pauses => stop listening for updates
        }
            @Override
        public void onLocationChanged(Location location) {

        }


        @Override
        public void onProviderDisabled(String provider) {

        }

        @Override
        public void onProviderEnabled(String provider) {

        }

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

        }

    }
4

1 回答 1

0

看看这个例子。做你想做的事情的很好的例子。

http://mobile.tutsplus.com/tutorials/android/android-sdk-build-a-mall-finder-app-points-of-interest/

于 2012-12-16T19:01:17.410 回答