2012-03-31 1 views

Répondre

8

Here is a book's sample application montrant comment avoir un MapView dans un Fragment dans une application API niveau 11+. C'est surtout juste un MapActivity. Voici les bits clés du fragment qui charge les MapView:

public class MapFragment extends Fragment { 
    private MapView map=null; 
    private MyLocationOverlay me=null; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
    return(new FrameLayout(getActivity())); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    map=new MapView(getActivity(), "0mjl6OufrY-tHs6WFurtL7rsYyEMpdEqBCbyjXg"); 
    map.setClickable(true); 

    map.getController().setCenter(getPoint(40.76793169992044, 
              -73.98180484771729)); 
    map.getController().setZoom(17); 
    map.setBuiltInZoomControls(true); 

    Drawable marker=getResources().getDrawable(R.drawable.marker); 

    marker.setBounds(0, 0, marker.getIntrinsicWidth(), 
          marker.getIntrinsicHeight()); 

    map.getOverlays().add(new SitesOverlay(marker)); 

    me=new MyLocationOverlay(getActivity(), map); 
    map.getOverlays().add(me); 

    ((ViewGroup)getView()).addView(map); 
    } 

    // rest of fragment here 
} 
+1

Merci pour la réponse ... Mais, mon activité ne doivent être mapactivity? J'ai actuellement une activité avec trois fragments, dont l'un est comme d'afficher une carte – hermann

+1

@hermann: "cependant, mon activité doit-elle être une mapactivité?" - oui, MapView requiert que son activité d'hébergement soit une MapActivity. "J'ai actuellement une activité avec trois fragments, dont l'un est l'affichage d'une carte" - juste parce que c'est une "MapActivity" ne signifie pas que la seule chose qu'elle peut montrer est une "MapView". Cela devrait fonctionner correctement. – CommonsWare

+0

Je reçois l'erreur suivante lorsque j'essaie d'implémenter la même chose 12-03 03: 22: 36.903: E/dalvikvm (12866): Impossible de trouver la classe 'com.google.android.maps.MapView', référencée par la méthode com. m7.nomad.MapsFragment.onActivityCreated –