Autore Topic: app map collegameto bottoni ad overlay della mappa  (Letto 805 volte)

Offline gilda

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    PC
  • Sistema operativo:
    Windows xp
app map collegameto bottoni ad overlay della mappa
« il: 20 Settembre 2012, 21:57:07 CEST »
0
E' la prima volta che scrivo....e come tanti altri il motivo è legato al fatto che non riesco a completare il codice della mia app. C'è qualuno che mi può aiutare? Qualcuno mi ha detto he è facile d risolvre , ma io non riesco..continuo a sbagliare...

L'applicazione prevede la creazione di due bottoni "EdificiPUBBLICI" e "EdificiPRIVATI" come d Activity Main che allego:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="33dp"
        android:text="@string/Satellite" />

    <CheckBox
        android:id="@+id/checkBox2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_toRightOf="@id/checkBox1"
        android:checked="true"
        android:text="@string/Streetview" />

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/checkBox1"
        android:orientation="vertical" >

        <com.google.android.maps.MapView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/mapview"
            android:layout_width="fill_parent"
            android:layout_height="290dp"
            android:apiKey="......................"
            android:clickable="true"
            android:enabled="true" />
    </LinearLayout>
    <!--
         TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/MAPS"
        tools:context=".MainActivity" /
    -->

    <CheckBox
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="14dp"
        android:text="@string/EdificiPUBBLICI" />

    <CheckBox
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_toRightOf="@+id/button1"
        android:text="@string/EdificiPRIVATI" />

</RelativeLayout>



In MainActivity Java ho scritto questo:
import java.util.List;

import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationProvider;
import android.os.Bundle;
import android.view.Menu;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

 
public class MainActivity<istanzaSegnapostoOverlay, EditText>   extends MapActivity implements OnCheckedChangeListener{
   
   MapView mapView = null;
   
   private CheckBox satellite = null;
   
   private CheckBox streetView = null;
   //Viene creato un Geo Point sul quale la mappa verrà centrata
   private final static GeoPoint vicenza = new GeoPoint(45550000, 11550000);
 
   private static final GeoPoint Vicenza = null;
   SegnapostoOverlay istanzaSegnapostoOverlay;

   private List<Overlay> mapOverlays;

   private MyLocationOverlay myLocationOverlay;
      

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CompoundButton btnvis = (CompoundButton)findViewById(R.id.button1);
        CompoundButton btnvis1 = (CompoundButton)findViewById(R.id.button2);
        btnvis.setOnCheckedChangeListener(this);
        btnvis1.setOnCheckedChangeListener(this);
       
      mapView = (MapView) findViewById(R.id.mapview);
        satellite = (CheckBox) findViewById(R.id.checkBox1);
        streetView = (CheckBox) findViewById(R.id.checkBox2);
        mapView.setSatellite(satellite.isChecked());
        mapView.setStreetView(streetView.isChecked());
        mapView.setClickable(true);
        mapView.setBuiltInZoomControls(true);
        mapController = mapView.getController();
        mapController.setZoom(10);
        mapController.setCenter(vicenza);
        mapOverlays = mapView.getOverlays();
        MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
        mapView.getOverlays().add(myLocationOverlay);
        mapOverlays.add(myLocationOverlay);
       
        //Viene creata una lista di tutti gli Overlay
        List<Overlay> mapOverlays = (List<Overlay>) mapView.getOverlays();
       
        //Viene impostata l'icona dei marker
        Drawable drawable = (Drawable) this.getResources(android.R.drawable.bottom_bar); //android.R.drawable.
                      //Viene creata  un'istanza della classe SegnapostoOverlay
        SegnapostoOverlay istanzaSegnapostoOverlay = new SegnapostoOverlay(drawable,this);
      
        //Vengono creati gli Overlay degli edifici a Risparmio Energetico
        OverlayItem edificio1 = new OverlayItem(new GeoPoint (45550000,11550000),"EdificiPRIVATI"," ");
        istanzaSegnapostoOverlay.addOverlay(edificio1);
       
        OverlayItem edificio2 = new OverlayItem(new GeoPoint (45666667,12335833),"EdificiPUBBLICI","scuola elementare progettata dalla ditta Stratex");
        istanzaSegnapostoOverlay.addOverlay(edificio2); 
       
       
    //Viene aggiunto istanzaSegnapostoOverlay a mapview
    //Si poteva anche scrivere:mapView.getOverlay().add(istanzaSegnapostoOverlay);
    mapOverlays.add(istanzaSegnapostoOverlay);
    }
 
   
    private Object getResources(int icActionSearch) {
      // TODO Auto-generated method stub
      return null;
   }


   @Override
    protected void onResume() {
    super.onResume();
    myLocationOverlay.enableMyLocation();
   
    LocationManager locationManager = (LocationManager) getSystemService(
    LOCATION_SERVICE);
    LocationProvider provider = locationManager.getProvider(providerId);
    if (provider != null && locationManager.isProviderEnabled(providerId)) {
    Location lastKnownLocation = locationManager.getLastKnownLocation(providerId);
    if (lastKnownLocation != null) {
    setCurrentLocation(lastKnownLocation);
    }
    locationManager.requestLocationUpdates(providerId, 1, 1, myLocationListener);}
    }
 
@Override
 protected void onPause() {
  super.onPause();
 
  LocationManager locationManager = (LocationManager) getSystemService(
  LOCATION_SERVICE);
  locationManager.removeUpdates(myLocationListener);

 
       
        satellite.setOnCheckedChangeListener(new OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
           mapView.setSatellite(isChecked);
           }
           });
           CompoundButton traffic = null;
         traffic.setOnCheckedChangeListener(new OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
           
           }
           });
           streetView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
           mapView.setStreetView(isChecked);
           }
           });
           }



    private void setCurrentLocation(Location lastKnownLocation) {
      // TODO Auto-generated method stub
      
   }
   private MapController mapController;
   
    private String providerId = LocationManager.GPS_PROVIDER;
    private LocationListener myLocationListener;
       

   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

   public void setMapView(MapView mapView) {
      this.mapView = mapView;
   }


   public MapView getMapView() {
      return mapView;
   }

//   public void setSatellite(CheckBox satellite) {
//      this.satellite = satellite;
//   }
//
//   public CheckBox getSatellite() {
//      return satellite;
//   }



//   public void setStreetView(CheckBox streetView) {
//      this.streetView = streetView;
//   }
//
//   public CheckBox getStreetView() {
//      return streetView;
//   }
   
   
   public static GeoPoint getVicenza() {
      return Vicenza;
   }
   @Override
   protected boolean isRouteDisplayed() {
      // TODO Auto-generated method stub
      return false;
   }
   @Override
   public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
      // TODO Auto-generated method stub
   
   
   }




}
Questo invece è il Manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.LAURA.edificienergia"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET" />"
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name">
       
        <uses-library android:name="com.google.android.maps"/>
        <activity
         android:name=".MainActivity"
         android:label="@string/title_activity_main">
         
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
       
    </application>
 </manifest>

A questo punto NON RIESCO A COLLEGARE IL BOTTONE "EdificiPRIVATI" CON lL'EDIFICIO 1 SEGNATO CON OVERLAY NELLA MAPPA E  IL BOTTONE "EdificiPUBBLICI" CON L'EDIFICIO 2 SEMPRE SEGANTO CON OVERLAY NELLA MAPPA. LA STESSA COSA VORREI FARE CON ALTRI EDIFICI CHE NON HO ANCORA SEGNATO MA CHE SEMPRE VORREI RICOLLEGARE AL BOTTONE "EdificiPRIVATI  O AL BOTTONE "EdificiPUBBLICI.
L'EMULATORE CHE E' PRESENTE SUL MIO PC MI FA' SOLO VEDER LA MAPPA..
Grazie fin da ora se qualcuno mi darà una mano 

Offline pink_diabo

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X, Windows, Ubuntu
Re:app map collegameto bottoni ad overlay della mappa
« Risposta #1 il: 21 Ottobre 2012, 11:19:06 CEST »
0
La parte che crea gli overlay deve stare in onResume(). Con onCreate() tu crei l'app e la installi sull'emulatore. Poi le successive volte che la apri viene richiamato onResume() e quindi è per questo che non vedi gli overlay.

Prova, a me così funziona.

Offline gilda

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    PC
  • Sistema operativo:
    Windows xp
Re:app map collegameto bottoni ad overlay della mappa
« Risposta #2 il: 21 Ottobre 2012, 22:26:58 CEST »
0
va bene grazie mille adesso provo.