0

場所が変更されたとき (または telnet 経由でモックの場所を提供したとき) に、マップ上の新しい場所をアニメーション化しようとしています。

これは私が使用するものです

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

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

Toast は経度と緯度を適切に表示しますが、アプリは指定された座標にアニメーション化されません。何が問題でしょうか?? 以下のコード全体を見つけてください。

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;
    }
}
4

2 に答える 2

1

I figured out the issue. It is something to do with getLongitude method :)

I need to multiply by 1E6 as given below.

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);
于 2011-06-25T06:29:25.933 に答える
0

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

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

それはうまくいくはずです!

于 2011-06-24T21:07:39.383 に答える