0

独自のアプリを作成し、Google マップを使用しようとしました。現在のGPS位置にマップの中心を設定したいのですが、携帯電話にGPSロックがあると、これらの座標(0,0)に移動するだけです。どこで間違ったのかわかりません。みんなありがとう:D

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

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


public class Courses extends MapActivity {

MapView map;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.courses);       
    MapView map = (MapView) findViewById (R.id.MapView);
    map.setBuiltInZoomControls(true);
    map.setSatellite(true);
    final MapController control = map.getController();


    LocationManager manager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

    LocationListener listener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
            control.setCenter(new GeoPoint((int)location.getLatitude(),(int)location.getLongitude()));              
            control.setZoom(19);
        }

        @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

        }

    };


manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);

}


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

} `

4

1 に答える 1

0

ここで目にする最初の問題は、location.getLatitude()location.getLongitude()がfloatを返すことです。これは 1E6 で乗算し、GeoPoint で受け入れられるように int としてキャストする必要があります。これは、座標が約 0,0 である理由も説明しています

あなたcontrol.setCenter(new GeoPoint((int)location.getLatitude(),(int)location.getLongitude()));をに置き換えることをお勧めしますcontrol.setCenter(new GeoPoint((int)(location.getLatitude() * 1E6),(int)(location.getLongitude() * 1E6)));

それを試してください、それはうまくいくはずです。

于 2012-06-27T10:34:44.683 に答える