我创建了用户需要看到getMyLocation()他/她的地理位置的应用程序,但这返回null。 对此有任何解决方案,是因为我读的是getMyLocation()方法总是返回null。 我是新来的谷歌地图,因此任何帮助将不胜感激!
码:
GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
map.setMyLocationEnabled(true);
Location myLocation = map.getMyLocation();
if( myLocation != null ){
helper.showToast( "Latitude: " + myLocation.getLatitude() + "\nLongitude: " + myLocation.getLongitude() );
}
请检查的示例代码Google Maps Android API v2
,使用此您将解决你的问题。
示例代码
private void setUpMapIfNeeded() {
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null) {
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
mMap.setMyLocationEnabled(true);
// Check if we were successful in obtaining the map.
if (mMap != null) {
mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location arg0) {
// TODO Auto-generated method stub
mMap.addMarker(new MarkerOptions().position(new LatLng(arg0.getLatitude(), arg0.getLongitude())).title("It's Me!"));
}
});
}
}
}
在调用这个函数上创建功能
我不喜欢他们的有限和缺陷的,因为新的谷歌地图API。 你的情况,我认为最好的办法就是使用的LocationManager和LocationListener的类。 你会得到的位置,当你的手机会找到卫星,那么你就可以在地图上添加标记。 您也可以使用getLastKnownLocation()如果你需要快速获得定位方法。 我认为,谷歌地图getMyLocation()
方法返回null,因为手机没有太多的时间去了解它的位置,当应用程序启动。 而在谷歌地图API V2没有某种onLocationChanged()
方法。 我不喜欢这个API。
我已经做了这种方式:
private GoogleMap mGoogleMap;
private SupportMapFragment mMapFragment;
上的onCreate():
mMapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
mGoogleMap = mMapFragment.getMap();
mGoogleMap.setOnMyLocationChangeListener(myLocationChangeListener);
现在添加MyLocationChangeListener:
private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
Log.i(TAG, "Latitude: "+String.valueOf(location.getLatitude())+" - Longitude: "+String.valueOf(location.getLongitude()));
}
};
希望这会帮助你。
map.getMyLocation() return null
becouse有上没有位置onCreate();
第一次在地图获得位置是第一onCameraChange()事件之后。
所以使用
map.setOnCameraChangeListener( new ...)
在你的地图,做你的执行发生后的第一时间