2011-06-24 7 views
0

私は場所が変わったときにマップ上の新しい場所をアニメーション化しようとしている(または私はTelnet経由モック場所を指定した場合)は動作しませんアンドロイド:地図のcontrolerのanimateTo方法が適切

これは何私であります

Toast.makeText(getApplicationContext(), "New Lontitue = "+ lontitue +"\n New Latitute = "+ latitute, Toast.LENGTH_LONG).show(); 

GeoPoint geopoint = new GeoPoint(latitute, lontitue); 
mapController.animateTo(geopoint); 

トーストが正しく表示されているにもかかわらず、appは与えられた座標にアニメーションを適用しません。何が問題なの?以下の私の全体のコードを見つけてください。

package com.mayuonline.androidgps; 

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

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 GPSActivity extends MapActivity { 
    MapController mapController; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     // setting up map 
     MapView mapview = (MapView)findViewById(R.id.mapview); 
     mapview.setBuiltInZoomControls(true); 

     mapController = mapview.getController(); 
     // mapController.setZoom(16); 

     LocationManager locationManager = (LocationManager)getSystemService(LOCATION_SERVICE); 

     LocationListener locationListener = new LocationListener() { 

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

      } 

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

      } 

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

      } 

      @Override 
      public void onLocationChanged(Location location) { 
       makeUseOfNewLocation(location); 
       //Toast.makeText(getApplicationContext(), "New Locationdd", Toast.LENGTH_LONG).show();    
      } 

      private void makeUseOfNewLocation(Location location) { 

       double lon = (double)location.getLongitude(); 
       double lat = (double)location.getLatitude(); 

       int lontitue = (int)lon; 
       int latitute = (int)lat; 

       Toast.makeText(getApplicationContext(), "New Lontitue = "+ lontitue +"\n New Latitute = "+ latitute, Toast.LENGTH_LONG).show(); 

       GeoPoint geopoint = new GeoPoint(latitute, lontitue); 
       mapController.animateTo(geopoint); 
      } 
     }; 

     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener); 
     locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,locationListener); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 
} 

答えて

1

私は問題を把握しました。これは、getLongitudeメソッドと関係があるものです。

以下のように1E6を掛ける必要があります。

double lon = (double) (location.getLongitude() * 1E6); 
double lat = (double) (location.getLatitude() * 1E6); 

int lontitue = (int)lon; 
int latitute = (int)lat; 

Toast.makeText(getApplicationContext(), "New Lontitue = "+ lontitue +"\n New Latitute = "+ latitute, Toast.LENGTH_LONG).show(); 

GeoPoint geopoint = new GeoPoint(latitute, lontitue); 
mapController.animateTo(geopoint); 
+0

ああ、これも問題の原因になります。名前と私はあなたがすでに正しい形でそれらを持っていると仮定した。申し訳ありません私の答えは助けではなかった! –

+0

問題ありません。 –

0

あなたが動作するはずです。この

GeoPoint geopoint = new GeoPoint(latitute, lontitue); 
     mapController.animateTo(geopoint); 
     mapview.invalidate(); 

のようなあなたのmapController.animateTo(geopoint)mapview.invalidate();を追加する必要があります!

+0

いいえ同じ結果は変わりません。それは同じ場所を指しています:((トーストはうまく動作しますが、マップは動かない) –

+0

無効にすると何もしません:( –

関連する問題