正如标题所示,当尝试在Android中设置我的googleMap对象的位置时,位置管理器会将位置返回为经度:0.0和纬度0.0(显示在Toast t中)。
我的清单中的权限设置正确,我目前在我目前的住所使用wifi访问我的位置。
获取设备位置的代码:
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
longitude = location.getLongitude();
latitude = location.getLatitude();
}
/* just un implemented methods */
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
/* end of un implemented methods */
};
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);
map=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.mapView)).getMap();
CameraUpdate position = CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(8);
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
map.moveCamera(position);
map.animateCamera(zoom);
Toast t = Toast.makeText(context, "longitiude : " + longitude + " latitude : " + latitude, Toast.LENGTH_SHORT);
t.show();
Android清单权限:
permission android:name="packageName.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
SupportMapFragment确实实际加载成功,因为上述情况恰好加载在错误的位置。我假设我正在做一些可怕的错误,但是我很感激任何帮助。
谢谢, 克里斯。