locationListener的问题

时间:2011-08-31 12:06:42

标签: android google-maps locationlistener

应用程序没有指出我在哪里......我做了什么:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mv=(MapView) findViewById (R.id.mapView);
    mv.setBuiltInZoomControls(true);
   // mv.setSatellite(true);
    mv.setStreetView(true);


lmanager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
    llistener=new MyLocationListener();
    lmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, llistener);

}

private class MyLocationListener implements LocationListener
{

    @Override
    public void onLocationChanged(Location location) {
        // TODO Auto-generated method stub
        if(location!=null)
        {
            Toast.makeText(getBaseContext(),"Location changed: "+location.getLatitude()+" lang: "+ location.getLongitude() , Toast.LENGTH_SHORT).show(); // no toast is shown
        }
         p=new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6));
        mapC.animateTo(p);
        mapC.setZoom(18);//no zooming happens
    }



@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

    }

在我的清单中,我添加了以下两个:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

1 个答案:

答案 0 :(得分:0)

首先抱歉英语不好。当位置被更改并且您将值设置到地图中时,您需要使用MapView类的invalidate()方法使地图无效,以便您可以在地图上获取更新的值

mapC.animateTo(p);
mapC.setZoom(18);
mv.invalidate();

以及在设置为地图的初始时间设置值后添加,如

mv.setBuiltInZoomControls(true);
mv.setStreetView(true);
mv.invalidate();