如何使用Android mapview在模拟器中获取当前位置(经度和纬度)?

时间:2011-03-04 06:32:20

标签: android

我想创建一个MapView应用程序,它显示我当前位置的纬度和经度。获取当前位置后,获取该位置的名称。有什么帮助吗?

5 个答案:

答案 0 :(得分:1)

使用android实际上很容易从GPS服务获取位置。使用LocationManager最简单的方法来执行此操作

locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

customLocationListener = new CustomLocationListener();

locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER,
        0,
        0,
        ll);

......一个Spagehtti代码在这里.......

class CustomLocationListener implements LocationListener{ ............
      public void onLocationChanged(Location argLocation) { 
         if(location != null) {     
        int latitude=(int)(argLocation.getLatitude()*1E6);
        int longitude=(int)(argLocation.getLongitude()*1E6);
              }
       } ........ }

也可能会检查Location Android APIAndroid Development

答案 1 :(得分:1)

Geocoder geo = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> add;
try
{
    add = geo.getFromLocation(
                location.getLatitude(), 
                location.getLongitude(), 
                1
            );

    if (add.size() > 0) 
    {
        addl1=add.get(0).getAddressLine(0); 
        addl2=add.get(0).getAddressLine(1);
        addl3=add.get(0).getAddressLine(2);
    }                   
}
你可以试试这个, 通过将其放入onLocationChanged来获取位置名称。

答案 2 :(得分:0)

请参阅链接:http://developer.android.com/guide/topics/location/obtaining-user-location.html

要获取位置名称,您应该使用GeoCoding。

答案 3 :(得分:0)

除了仅使用模拟器测试此功能外,您可能需要从外部设置位置,请参阅:How to emulate GPS location in the Android Emulator?

甚至可以使用MockLocationProvider / LocationManager.setTestProvider ..进行单元测试。

哦顺便说一句:如果你已经使用了MapView,你可能也会对使用MyLocationOverlay感兴趣。它将在地图上显示您当前的位置。通过对其进行子类化,您还可以挂钩onLocationChanged方法以插入应在位置更改后运行的自定义位置代码。

答案 4 :(得分:0)

使用以下代码可以帮助您找到当前城市

Geocoder geocoder=new Geocoder(getBaseContext(),Locale.getDefault());
try 
{
    String city="";
    List<Address> addresses= geocoder.getFromLocation(
        geoPoint.getLatitudeE6() / 1E6,
        geoPoint.getLongitudeE6() / 1E6, 
        1
    );
    if(addresses.size()>0)
    {
        city+=addresses.get(0).getSubAdminArea();
    }
} 
catch (IOException e) 
{
    e.printStackTrace();
}