0

私はMapViewウィジェットを登録するmapActivityを持ち、バックグラウンドで位置データをチェックするサービスを実行しています。このようにBroadcastReceiverを介してmapactivityでサービスを開始しています

  public class MainActivity extends MapActivity {

    private MapView view;

   protected void onCreate(Bundle savedInstanceState) {

        view = (MapView) findViewById(R.id.themap);
    view.setBuiltInZoomControls(true);

    Intent in = new Intent();
    MyReceiver locationRecvr = new MyReceiver();
    locationRecvr.onReceive(getApplicationContext(), in);

  }
 ......................

 }

myReveiver.java

 public class MyReceiver extends BroadcastReceiver {
  @Override
   public void onReceive(Context context, Intent intent) {
       Toast.makeText(context, "MyReceiver Started..",Toast.LENGTH_SHORT).show();
       Log.v("Debug", "MyReceiver Started..");
       Intent myIntent=new Intent(context, ServiceLocation.class);        
       context.startService(myIntent);
}
 }

および myservice と LocationListener はこのように

  public class ServiceLocation extends Service implements LocationListener {
       ......
       ..... 
       .... 
  }

私の質問は、場所が変更されたときに、マップビューでその場所を変更する方法、onLocationchanged() メソッドでマップビュー参照を取得する方法、または緯度と経度を mapActivity に送信する方法です。

前もって感謝します

4

3 に答える 3

0

サービスから、Send Lat/LongsをMapActivityに送信できます。Intent Extraにラップ/ロングを入れることで、そこからMapActivityを開始できます。

MapActivityで-

 /**
 * Setting Google Map to provided location 
 */

 private void setMaptoProvidedLocation() {
 Intent intent = getIntent();
 LAT = intent.getIntExtra(DisplayActivity.LAT, DisplayActivity.DEF_LAT);
 LNG = intent.getIntExtra(DisplayActivity.LNG, DisplayActivity.DEF_LNG);

 mapView.setBuiltInZoomControls(true);
 mapView.setSatellite(true);
 mapController = mapView.getController();


 mapController.setZoom(ZOOM_LEVEL - ZOOM_LEVEL / 2);
 GeoPoint vehicleLocation = new GeoPoint(LAT, LNG);
 mapController.animateTo(vehicleLocation);
 // You can also add map overlays ...

}

//If MapDisplayActivity is in forground and we want to update the new location

@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
Log.d("MapActivity","Got new Data again");
setMaptoProvidedLocation(false);
}
于 2013-01-21T09:20:27.600 に答える
0

ロケーションリスナーでユーザーのロケーションが更新されたときにブロードキャストを送信します。マップの位置を更新します。ブロードキャストされたインテントでは、更新された場所を渡すこともできます。

于 2013-01-20T14:13:33.200 に答える
0

locationManager と LocationUpdates を次のように使用する必要があります。

locationManager.requestLocationUpdates(provider, 400, 1, this);

距離と時間を表すパラメータを必要に応じて設定できます。そして後で関数を次のように定義する必要があります

public void onLocationChanged(Location location)
{
}

詳細については、ここをクリックしてください

于 2013-01-21T09:40:08.903 に答える