2011-12-06 20 views
0

mapViewを表示するプログラムを作成しました。電話機の位置と、この位置(緯度、経度)をメールで送信する機能を作成しました。 (データベースにいくつかの場所を追加するため)。Android LocationManagerクラスが正しい緯度/経度を返していない

私は、LocationManagerクラスとgetLatitude/getLongitudeメソッドを使用して電話の場所を取得しています。私のコードは次のようになります。エミュレータ上で自分のアプリケーションをテストする場合

double MyLongitude = 0; 
double MyLatitude = 0; 
Location location = null; 

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

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, new ShowLocation()); 

location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

MyLatitude = location.getLatitude(); 
MyLongitude = location.getLongitude(); 

、すべてがOKです:MapViewのは、私は(telnetや地理fixコマンドを使用して)固定位置を表示し、私は電子メールを介して位置を送信することができます。私は友人の電話で同じ結果を得る。すべてがうまくいくようです。

問題は私の電話にあります。私は自分の位置をmapView(小さな青色の円)に表示することができますが、電子メールで自分の位置を送信しようとすると、緯度と経度はともに0に設定されています。

ここに私の位置をMapView:

MyLocationOverlay myLocation = new MyLocationOverlay(this, mapView); 
myLocation.enableMyLocation(); 

エミュレータと私の友人の携帯電話上で動作するように思えますが、表示されたとき、私の場所が動作しているように見えますが、私は正しい緯度と経度を取得することはできませんなぜ私は理解していません。

これはコードの欠落などによるものですか?これは私の電話に問題がありますか?私は権限をチェックし、私はすでに必要なものを持っている:

android.permission.ACCESS_FINE_LOCATION 
android.permission.ACCESS_COARSE_LOCATION 
android.permission.ACCESS_MOCK_LOCATION 

私もLocationManager.NETWORK_PROVIDERの代わりLocationManager.GPS_PROVIDERでテストしようとしましたが、同じ結果を得ました。

答えて

1

MyLocationOverlayのonLoationChanged(Location l)をオーバーライドすることができます。これは、位置の更新とgetLastKnownLocationを要求するのではなく、オーバーレイが新しい位置を描画するたびに呼び出されます。

まだ場所の修正が行われていないため、getLastKnownLocationが0を返すと推測しています。

+0

mapViewが表示されているクラスにLocationListenerが実装されているため、 "OnLocationChanged"メソッドが実装されています。そこで、私はちょうどLocationManagerからgetLatitudeとgetLongitudeメソッドを使用します。 – JoMoX909

+0

携帯電話で場所を固定する方法はありますか? – JoMoX909

+0

OnLocationChangedで経度と緯度を取得した場合は、0,0ですか? – FunkTheMonk

関連する問題