我想创建一个MapView应用程序,它显示我当前位置的纬度和经度。获取当前位置后,获取该位置的名称。有什么帮助吗?
答案 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);
}
} ........ }
答案 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();
}