/** Handles a tap event on the given item. le mafeux ontap */ @Override protected boolean onTap(int index) { OverlayItem item = createItem(index); if (item != null) { if (item.getPoint() == Global.getArbo()) { Builder builder = new AlertDialog.Builder(this.context, AlertDialog.THEME_HOLO_DARK); builder.setItems( tArbo, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (which == 0) { Intent v = new Intent(context, DescriptionArbo.class); startActivity(v); } } }); builder.setIcon(android.R.drawable.ic_menu_info_details); builder.setTitle(item.getTitle()); builder.setPositiveButton("Retour", null); builder.show(); } } return true; }
@Override public void onLocationChanged(Location arg0) { GeoPoint my_pos = new GeoPoint(arg0.getLatitude(), arg0.getLongitude()); item2.setPoint(my_pos); // pour raffraichir en touchant l'écran // mapView.refreshDrawableState(); // pour recentrer à chaque clique if (clique == 1) { mapView.setCenter(my_pos); clique = 0; } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // chargement du fichier map File map = new File( Environment.getExternalStorageDirectory().toString() + "/Arboretum/Map/grenoble.map"); // ajout de la map proprement mapView = new MapView(this); mapView.setMapFile(map); // on rend la map cliquable mapView.setClickable(true); // on rend la map zoomable mapView.setBuiltInZoomControls(true); // affichage de la map setContentView(mapView); // Creation d'un marker, un objet Drawable Drawable defaultMarker = getResources().getDrawable(R.drawable.letter_a); Drawable location = getResources().getDrawable(R.drawable.location_unoriented); // ici on les stock. La deuxieme liste n'est pas MyItemizdOverlay pour // la simple raison qu'elle va stocker notre curseur de position // dont on ne souhaite pas qu'il y ai de reaction si on tap dessus ArrayItemizedOverlay itemizedOverlay = new MyItemizedOverlay(defaultMarker, this); ArrayItemizedOverlay itemizedOverlay2 = new ArrayItemizedOverlay(location); // create a GeoPoint with the latitude and longitude coordinates GeoPoint myPos = new GeoPoint(0, 0); // create an OverlayItem with title and description item = new OverlayItem(Global.getArbo(), "Arboretum", "Localisation de l'arboretum."); item2 = new OverlayItem(myPos, "Moi", "Ma position."); item.setMarker(ItemizedOverlay.boundCenter(defaultMarker)); item2.setMarker(ItemizedOverlay.boundCenter(location)); // add the OverlayItem to the ArrayItemizedOverlay itemizedOverlay.addItem(item); itemizedOverlay2.addItem(item2); // Le GPS locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 0, this); sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); if (sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) != null) { // success! there's a magnetometer } else { Toast.makeText(this, "Problème d'accelerometer", Toast.LENGTH_LONG).show(); } // add the ArrayItemizedOverlay to the MapView mapView.getOverlays().add(itemizedOverlay); mapView.getOverlays().add(itemizedOverlay2); // je me centre sur moi mapView.setCenter(item2.getPoint()); // puis je zoom *2 mapView.zoom((byte) 2, 2); // Récupère le root layout FrameLayout fl = (FrameLayout) this.getWindow().getDecorView().getRootView().findViewById(android.R.id.content); // Crée le bouton myButton = new Button(this); myButton.setText("Recentrer"); myButton.setLayoutParams( new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); // Ajoute le bouton au layout fl.addView(myButton); myButton.setOnClickListener(this); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Creation de notre map et mise en place des options liées File map = new File(Environment.getExternalStorageDirectory().toString() + "/campus.map"); mapView = new MapView(this); mapView.setMapFile(map); mapView.setClickable(true); mapView.setBuiltInZoomControls(true); setContentView(mapView); // Creation des markers pour la position courante et pour les points d'interets Drawable location = getResources().getDrawable(R.drawable.location_oriented); Drawable draw_poi = getResources().getDrawable(R.drawable.location); // On le stock dans un tableau seul car on ne le veut pas cliquable ArrayItemizedOverlay itemizedOverlay_location = new ArrayItemizedOverlay(location); // Initialisation du GPS au niveau du soleil GeoPoint myPos = new GeoPoint(45.194218, 5.777244); // Creation du tableau de marker pour les points d'interets ArrayItemizedOverlay itemizedOverlay_POI = new ItemizedOverlay_POI(ItemizedOverlay.boundCenter(draw_poi), this); // Mise à jour du marker de position courante MarkerLocation = new OverlayItem(myPos, "Moi", "Je suis ici"); MarkerLocation.setMarker(ItemizedOverlay.boundCenter(location)); itemizedOverlay_location.addItem(MarkerLocation); mapView.setCenter(MarkerLocation.getPoint()); // On ajoute ici les planètes et les plantes dans le itemized Overlay une par une itemizedOverlay_POI.addItem( new OverlayItem(Description.getSoleil(), "Soleil", "Emplacement du Soleil")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getMarre(), "Mare", "Emplacement de la Mare")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getMercure(), "Mercure", "Emplacement de Mercure")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getVenus(), "Venus", "Emplacement de Venus")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getTerre(), "Terre", "Emplacement de Terre")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getMars(), "Mars", "Emplacement de Mars")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getJupiter(), "Jupiter", "Emplacement de Jupiter")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getSaturne(), "Saturne", "Emplacement de Saturne")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getUranus(), "Uranus", "Emplacement de Uranus")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getMeleze(), "Meleze", "Emplacement de Meleze")); itemizedOverlay_POI.addItem( new OverlayItem(Description.getMahonia(), "Mahonia", "Emplacement de Mahonia")); // Mise en place de l'utilisation du GPS this.location = (LocationManager) getSystemService(Context.LOCATION_SERVICE); this.location.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 0, this); // On ajoute les markers dans la mapview mapView.getOverlays().add(itemizedOverlay_POI); mapView.getOverlays().add(itemizedOverlay_location); }
@Override public void onLocationChanged(Location arg0) { // Mise à jour du marker si ma position sur le GPS change GeoPoint my_pos = new GeoPoint(arg0.getLatitude(), arg0.getLongitude()); MarkerLocation.setPoint(my_pos); }