Java Can';找不到用户位置谷歌地图Api v2
我需要找到当前的纬度和经度来获取地址,但它不起作用 这是我的许可证:Java Can';找不到用户位置谷歌地图Api v2,java,android,google-maps,latitude-longitude,google-maps-api-2,Java,Android,Google Maps,Latitude Longitude,Google Maps Api 2,我需要找到当前的纬度和经度来获取地址,但它不起作用 这是我的许可证: <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
我的java代码:
public void GetCurrentLocal() throws IOException{
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
String provider = locationManager.getBestProvider(criteria, true);
Location myLocation = locationManager.getLastKnownLocation(provider);
double latitude = myLocation.getLatitude();
double longitude = myLocation.getLongitude();
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());
addresses = geocoder.getFromLocation(latitude, longitude, 1);
String address = addresses.get(0).getAddressLine(0);
System.out.println(address);
}
public void GetCurrentLocal()引发IOException{
LocationManager LocationManager=(LocationManager)getSystemService(LOCATION\u服务);
标准=新标准();
字符串提供程序=locationManager.getBestProvider(条件为true);
Location myLocation=locationManager.getLastKnownLocation(提供者);
双纬度=myLocation.getLatitude();
double longitude=myLocation.getLongitude();
地理编码器;
列出地址;
geocoder=新的geocoder(这个,Locale.getDefault());
地址=地理编码器.getFromLocation(纬度,经度,1);
字符串地址=地址.get(0).getAddressLine(0);
系统输出打印项次(地址);
}
谢谢。如果在
myLocation.getLatitude()上失败
如您在评论中所述,它表示locationManager.getLastKnownLocation(提供者)
不返回最后一个已知位置,因为它没有位置,所以返回null,这就是出现NullPointerExeception
错误的原因。在这种情况下,您需要实现一个LocationListener
,并在收到至少一个位置更新后运行此方法
要实现LocationListener
,您可以检查以下示例:
我想这本阅读材料对你来说也很方便:
我有这个代码,对我来说很有用
private Location getMyLocation() {
// Get location from GPS if it's available
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// Location wasn't found, check the next most accurate place for the
// current location
if (myLocation == null) {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
// Finds a provider that matches the criteria
String provider = lm.getBestProvider(criteria, true);
// Use the provider to get the last known location
myLocation = lm.getLastKnownLocation(provider);
}
return myLocation;
}
Location location = this.getMyLocation();
LatLng locationGPS = new LatLng(location.getLatitude(), location.getLongitude());
怎么不起作用?你有错误日志吗?你得到了什么?这真的与谷歌地图无关。我的错误日志没有显示任何内容。只需NullPointerException我不需要谷歌地图API就可以了?@Pajeh你不需要谷歌地图来获取当前的location@tyczj好的,但是为什么它不起作用呢?它正在myLocation.getLatitude()上崩溃;我刚刚看到了