当设备通过网络提供商获取位置时,我可以获得经度和纬度并将它们转换为geopoint,但是当我使用gps时它会失败。我该怎么做才能解决这个问题?
public void onCreate(Bundle savedInstanceState) {
...
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocation = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (mLocation != null) {
gp1 = getGeoByLocation(mLocation);
gp2 = gp1;
refreshMapView();
if( !mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000,
10, mLocationListener);
}else{
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000,
10, mLocationListener);
}
private GeoPoint getGeoByLocation(Location location) {
GeoPoint gp = null;
try {
if (location != null) {
double geoLatitude = location.getLatitude() * 1E6;
double geoLongitude = location.getLongitude() * 1E6;
gp = new GeoPoint((int) geoLatitude, (int) geoLongitude);
}
} catch (Exception e) {
e.printStackTrace();
}
return gp;
}
答案 0 :(得分:1)
isProviderEnabled
将为false。如果启用了GPS,您应该会在通知/状态栏上看到一个图标。
答案 1 :(得分:1)
GPS速度慢得多,通常无法使用。如果某人在建筑物中,例如开发软件的办公室,或者甚至是软件开发人员的房屋/公寓,那么很有可能您无法获得GPS修复。我们的应用程序在很大程度上依赖于位置,我们获得的大部分位置坐标都来自手机信号塔或wifi三角测量,两者都显示为NETWORK_PROVIDER。