0

GPS から座標を取得しようとしています (これは実際にトーストの緯度と経度の値を示します)。その値を取得し、それをマップ座標として使用して現在の場所を表示しようとしていますが、表示されていません。私はどこで間違ったのですか?

public class Map extends MapActivity {

    MapController mControl;
    GeoPoint GeoP;
    MapView mapV;


    public double lat;
    public double longi;

    private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters
    private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds

    protected LocationManager locationManager;

    @Override

    public void onCreate (Bundle saveInstanceState){
        super.onCreate(saveInstanceState);
        setContentView(R.layout.map);


        mapV = (MapView)findViewById(R.id.mapview);

        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 
                MINIMUM_TIME_BETWEEN_UPDATES, 
                MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
                new MyLocationListener()
        );

        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location != null) {

            lat = location.getLatitude();
            longi = location.getLongitude();

        }

        String message = String.format(
                "New Location \n Longitude: %1$s \n Latitude: %2$s",
                location.getLongitude(), location.getLatitude()
        );
        Toast.makeText(Map.this, message, Toast.LENGTH_LONG).show();



        GeoP = new GeoPoint ((int)(lat*1E6),(int)(longi * 1E6));


        mControl = mapV.getController();
        mControl.animateTo(GeoP);
        mControl.setZoom(13);


    }
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

    private class MyLocationListener implements LocationListener {

        public void onLocationChanged(Location location) {
            String message = String.format(
                    "New Location \n Longitude: %1$s \n Latitude: %2$s",
                    location.getLongitude(), location.getLatitude()
            );
            Toast.makeText(Map.this, message, Toast.LENGTH_LONG).show();
        }

        @Override
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub

        }

}
}
4

3 に答える 3

1

ちょっと私は例としてこのサイトを使用して実装しましたこれを見てくださいそれはあなたを助けるかもしれませ んhttp://mobiforge.com/developing/story/using-google-maps-androidhttp://www.vogella.com/articles/ AndroidLocationAPI / article.html

于 2012-06-15T06:51:07.403 に答える
1

onLocationChanged Callback で場所を表示しようとしないのはなぜだろうか。デバイスが場所をフェッチするときはいつでも、最初にこのメソッドが呼び出されます。

onLocationChanged に次のコードを含めます。

このようなものでなければなりません。

 @Override
 public void onLocationChanged(Location location) {
        int lat = (int) (location.getLatitude() * 1E6);
        int lng = (int) (location.getLongitude() * 1E6);
        GeoPoint point = new GeoPoint(lat, lng);
        mControl.animateTo(point); // mapController.setCenter(point);

        }
于 2012-06-15T07:02:30.597 に答える
0
package m.a.p;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.location.LocationListener;
import android.os.Bundle;
import android.widget.Toast;

public class MappingActivity extends MapActivity {
    /** Called when the activity is first created. */

    MapController mControl;
    GeoPoint GeoP;
    MapView mapV;

    public double lat;
    public double lng;

     private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters
     private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds

    protected LocationManager locationManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mapV = (MapView) findViewById(R.id.mapview);

//        double lat = 40.8;
//        double lng = -96.66;


        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 
                MINIMUM_TIME_BETWEEN_UPDATES, 
                MINIMUM_DISTANCE_CHANGE_FOR_UPDATES,
                new MyLocationListener()
        );

        Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if (location != null) {

            lat = location.getLatitude();
            lng = location.getLongitude();

        }

        String message = String.format(
                "New Location \n Longitude: %1$s \n Latitude: %2$s",
                lat, lng
        );
        Toast.makeText(MappingActivity.this, message, Toast.LENGTH_LONG).show();



        GeoP = new GeoPoint ((int)(lat*1E6),(int)(lng * 1E6));



  //      GeoP = new GeoPoint ((int)(lat * 1E6),(int)(lng*1E6));

        mControl = mapV.getController();
        mControl.animateTo(GeoP);
        mControl.setZoom(13);
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }


    public class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {
            String message = String.format(
                    "New Location \n Longitude: %1$s \n Latitude: %2$s",
                    lat, lng
            );
            Toast.makeText(MappingActivity.this, message, Toast.LENGTH_LONG).show();
        }

        @Override
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub

        }

}
}

助けてくれてありがとう。それはついに働いた

于 2012-06-15T08:57:17.680 に答える