2015-04-23 2 views
1

У меня есть этот XMLMapView нуль в Fragment

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="#f00" 
android:gravity="center"> 

<com.google.android.gms.maps.MapView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/map" /> 

</LinearLayout> 

И это мой код в методе onCreateView в фрагменте

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    View view = inflater.inflate(R.layout.map_activity, container, false); 
    mapView = (MapView) view.findViewById(R.id.map); 
    mMap = mapView.getMap(); 

     if (mMap== null) 
     { 
      Toast.makeText(getActivity().getBaseContext(),"Google Maps not Available", 
        Toast.LENGTH_LONG).show(); 
     } 

     locReader = (LocationReader) new LocationReader(getActivity().getBaseContext(), true); 
     this.loc = locReader.getLastKnownLocation(); 
     moveCamMyPosition(loc); 

    return view; 
} 

Обломок нагрузки нормально, но Nmap равно нулю. Тост появляется «Карты Google недоступны».

Не могу найти ошибку.

+0

вы создали ключ и определенный в menifest –

+0

, на каком устройстве вы используете этот код? похоже, что вы используете эмулятор. –

+0

@PramodYadav Да – aldakur

ответ

3

Попробуйте использовать getMapAsync(OnMapReadyCallback callback) вместо getMap(). http://developer.android.com/reference/com/google/android/gms/maps/MapView.html

public class myFragment extends Fragment implements OnMapReadyCallback { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     /* ... */ 
     mapView.getMapAsync(this); 
     /* ... */ 
    } 

    @Override 
    public void onMapReady(GoogleMap map) { 
     /* do something with the map */ 
     mMap = map; 
     locReader = (LocationReader) new LocationReader(getActivity().getBaseContext(), true); 
     this.loc = locReader.getLastKnownLocation(); 
     moveCamMyPosition(loc); 
    } 
} 
+0

'nMap = mapView.getMapAsync (this)' "Метод getMapAsync (обратный вызов OnMapReadyCallback) в te type mapView не применим для аргументов myFragmentName" – aldakur

+0

посмотреть на мой редактировать. –

+0

Но в этом случае моя переменная mMap также является нулевой. – aldakur

-1
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    CHD = new LatLng(dlat, dlong); 
    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) 
      .getMap(); 
    map.setMyLocationEnabled(true); 
    map.addMarker(new MarkerOptions().position(CHD).title("You Are Here")); 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(CHD, 15)); 
    map.animateCamera(CameraUpdateFactory.zoomTo(12), 2000, null); 

} 





<fragment 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.MapFragment" /> 
0

вы сформировали правильный ключ Google Maps API?

И для Карт Google необходимы следующие разрешения.

  • ACCESS_NETWORK_STATE - Для того, чтобы проверить состояние сети, может ли быть загружены данные или нет
  • INTERNET - проверить интернет статус соединения
  • WRITE_EXTERNAL_STORAGE - Для записи на внешний накопитель в качестве данных Google Maps магазин карты во внешнем хранилище
  • ACCESS_COARSE_LOCATION - Определение местоположения пользователя с использованием данных Wi-Fi и мобильных ячеек
  • ACCESS_FINE_LOCATION - определение местоположения пользователя с использованием GPS

OpenGL ES V2 - Требуется для Google Maps V2

+0

Да. Последняя карта, запущенная в действии – aldakur

Смежные вопросы