在Android应用程序中显示纬度经度位置的问题

时间:2011-03-28 05:38:44

标签: android location

以下是我用于查找我的应用中某个地点的纬度经度和位置的代码,但它始终显示找不到位置

我已在清单文件中添加了权限

{   LocationManager locManager; setContentView(R.layout.main); locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000L,500.0f, locationListener);
    Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    if(location != null)                                
     {
        String param = (String)locManager.getProviders(true).get(0);
        Location loc = locManager.getLastKnownLocation(param);

      double latitude = location.getLatitude();
      double longitude = location.getLongitude();
     }  
}

    private void updateWithNewLocation(Location location) 
    {
            TextView myLocationText = (TextView)findViewById(R.id.widget52);
            String latLongString = " ";
            if (location != null) 
            {
                double lat = location.getLatitude();
                double lng = location.getLongitude();
                latLongString = "Lat:" + lat + "\nLong:" + lng;

            } 
            else 
            {
                latLongString = "No location found";
            }
             myLocationText.setText("Your Current Position is:\n" +
                    latLongString);
    }

        private final LocationListener locationListener = new LocationListener() 
        {
            public void onLocationChanged(Location location) 
            {
                updateWithNewLocation(location);
            }

            public void onProviderDisabled(String provider) 
            {
                updateWithNewLocation(null);
            }

            public void onProviderEnabled(String provider) 
            {
            }

            public void onStatusChanged(String provider, int status, Bundle extras) 
            {
            }
        };

}

请帮助我...

2 个答案:

答案 0 :(得分:0)

我已将您的代码放入Android项目并在模拟器上运行它似乎工作正常。

我会将代码更改为首先检查上一个已知位置,然后检查位置更新

Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

如果该位置为空或过于陈旧(时间戳)以满足您的需求,您可以开始请求位置更新。 (目前,您首先从GPS请求位置更新,然后决定检索其上次位置)。这可能会导致位置管理员停止查询GPS。

此外,您需要确保以下内容:

对于GPS提供商,请确保将以下权限放入清单

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

确保GPS已打开,您有足够的GPS覆盖率。

通过检查通知栏中的GPS图标

来执行此操作

在真实设备上测试

虽然测试GPS位置监听器部分通过仿真器工作,但实际设备的行为总是不同。

在模拟器上调试

可以使用仿真器完成基本的GPS测试。在您的locationlistener中放置一个断点,并使用DDMS透视图将一些GPS坐标发送到您的AVD图像。

答案 1 :(得分:0)

@Siva,你的问题在于UI线程,因为你的更新来自不同的线程。

要验证这是否是UI问题,请在收到更新时放入Toast或Log cat消息。

一旦您知道该UI问题,请尝试使用HandlerpostInvalidate()用户界面。