【发布时间】:2012-03-24 19:47:26
【问题描述】:
在我的应用程序中,我想获取用户的位置并将其显示在地图(谷歌地图)上。 在安卓设备的设置中,您可以检查
- 使用无线网络
- 使用 GPS 卫星
当用户启动 mapactivity 时,我会显示一个对话框,用户可以在其中选择是否获取当前位置。
Old code deleted
如果用户想要获取他的位置,我会检查 gps 是否已启用。如果没有,我开始设置。否则我会尝试获取位置。但即使 GPS 处于活动状态并“使用无线网络”,他也不会获得位置。是否有解决方案来检查“使用无线网络”是否已启用。或者我需要更改代码的哪一部分才能仅通过 GPS 信号获取位置?
谢谢
编辑我的当前代码:
boolean isGps = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
boolean isNetwork = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!isGps && !isNetwork){
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
} else if(isGps && !isNetwork) {
String bestProvider = LocationManager.GPS_PROVIDER;
Location location = lm.getLastKnownLocation(bestProvider);
Toast.makeText(MapsTabActivitiy.this, "Location niet beschikbaar.", Toast.LENGTH_SHORT).show();
} else if(!isGps && isNetwork) {
String bestProvider = LocationManager.NETWORK_PROVIDER;
Location location = lm.getLastKnownLocation(bestProvider);
if(location == null){
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} else if (location != null){
mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6)));
mapcontroller.setZoom(15);
}
}
else {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String bestProvider = lm.getBestProvider(criteria, false);
Location location = lm.getLastKnownLocation(bestProvider);
if(location == null){
location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
} else if (location != null){
mapcontroller.animateTo(new GeoPoint((int)(location.getLatitude()*1E6), (int)(location.getLongitude()*1E6)));
mapcontroller.setZoom(15);
}
}
所以我使用 isProviderEnabled 检查 GPS_PROVIDER 和 NETWORK_PROVIDER。如果我改变了获取位置的方式,则使用 if,否则。我需要找到的唯一案例是案例 2(否则 if(isGps && !isNetwork){})。通过 GPS 信号获取位置。
【问题讨论】:
标签: android google-maps geolocation