Autore Topic: MapView Api v2 - Problema api precedenti  (Letto 715 volte)

Offline Ray13

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7
MapView Api v2 - Problema api precedenti
« il: 18 Maggio 2013, 22:26:53 CEST »
0
Salve ragazzi. Sto provando le mapView v2 di google ed ho un problema. Attualmente funziona tutto e dico tutto, la mappa. Le posizioni vicino a me scaricate in parsing xml con le coordinate ecc... Ma ho un problema. Tutto quello che ho creato funziona solo per le versioni Api 11 e superiori. Esempio ho testato l'app su un samsung galaxy sIII ed ha funzionato tutto correttamente. Ho provato su un Samsung Galaxy SII (api 10) e va in crash l'app.

A quanto ho capito è perchè bisogna usare un'altro componente, non saprei quale però... Vi incollo il codice così vi fate un'idea:

Codice (Java): [Seleziona]
import it.anomos.shopandsave.FormRegistrati;
import it.anomos.shopandsave.MyDatabase;
import it.anomos.shopandsave.R;
import it.anomos.shopandsave.TabBarActivity;
import it.anomos.shopandsave.SecondActivityPackage.PaginaDettaglioCategorie;
import it.anomos.shopandsave.SecondActivityPackage.TabGroupActivity2;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import utils.Costanti;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;



@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class ThirdActivity extends Activity implements OnClickListener {
       
       
        String KEY_POSITION ="posizione";
       
        static final String KEY_LAT = "lat";
        static final String KEY_LNG = "lgn";
        static final String KEY_STORE_NAME = "store_name";
        static final String KEY_SELLER_ADDRESS = "seller_address";
    ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
        String controllo_login_tempo;
    String contenuto_nodo;
    ArrayList <String> array_contenuto_nodo =new ArrayList<String>();
    ArrayList <String> array_lng =new ArrayList<String>();
    ArrayList <String> array_lat =new ArrayList<String>();
    ArrayList <String> array_store_name =new ArrayList<String>();
    ArrayList <String> array_seller_address =new ArrayList<String>();
    Button btn_filtra;

       
  static final LatLng HAMBURG = new LatLng(53.558, 9.927);
  static final LatLng KIEL = new LatLng(53.551, 9.993);
  private GoogleMap map;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_activity);
    map = ((MapFragment)getFragmentManager().findFragmentById(R.id.map))
        .getMap();
    map.setMyLocationEnabled(true);
    btn_filtra = (Button)findViewById(R.id.btn_filtra);
    btn_filtra.setOnClickListener(this);

    Criteria criteria = new Criteria();
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    String provider = locationManager.getBestProvider(criteria, false);
    Location location = locationManager.getLastKnownLocation(provider);
    double lat =  location.getLatitude();
    double lng = location.getLongitude();
    LatLng coordinate = new LatLng(lat, lng);
    Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
        .title("Hamburg"));
    Marker kiel = map.addMarker(new MarkerOptions()
        .position(KIEL)
        .title("Kiel")
        .snippet("Kiel is cool")
        .icon(BitmapDescriptorFactory
            .fromResource(R.drawable.puntine)));
   
    // Move the camera instantly to hamburg with a zoom of 15.
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(coordinate, 12));

    // Zoom in, animating the camera.
    map.animateCamera(CameraUpdateFactory.zoomTo(12), 2000, null);
    TaskMapStore task = new TaskMapStore();
        task.execute();
        while(controllo_login_tempo != "finito"){
        try {Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
        }

   
    System.out.println("L'array degli store è grande: "+array_store_name.size());
        for(int i = 0; i < array_store_name.size(); i++){
                double miaLatitudine = Double.valueOf(array_lat.get(i));
                double miaLongitudine = Double.valueOf(array_lng.get(i));
                 LatLng NAMEOFSTORE = new LatLng(miaLatitudine, miaLongitudine);
                    Marker cicloDiMarker = map.addMarker(new MarkerOptions()
                .position(NAMEOFSTORE)
                .title(array_store_name.get(i))
                .snippet(array_seller_address.get(i))
                .icon(BitmapDescriptorFactory
                    .fromResource(R.drawable.puntine)));
                }
    System.out.println("Le mie latitudini sono: "+array_lat);
    System.out.println("I nomi degli store sono: "+array_store_name);
    System.out.println("Le mie longitudini sono: "+array_lng);
   
   
  }
        public void onClick(View v) {

            switch (v.getId()) {

                case R.id.btn_filtra:
                        System.out.println("Sono stato premuto");
                    Intent previewMessage = new Intent(getParent(), ListViewCheckboxesActivity.class);
                    TabGroupActivity3 parentActivity = (TabGroupActivity3)getParent();
                    parentActivity.startChildActivity("ListViewCheckboxesActivity", previewMessage);

                       
                    break;
            }
            }
  class TaskMapStore extends AsyncTask<String, Void, Void> {

               
                protected void onPreExecute(Void... params) {

                }

                protected Void doInBackground(String... args) {

                        try {

                                // passo i parametri di mail e password alle variabili


                                //setto la pagina
                            HttpClient httpClient = new DefaultHttpClient();
                            HttpContext localContext = new BasicHttpContext();
                                String mioUrl ="miosito";
                                if(Costanti.array_categorie_selezionate_id.size() > 0){
                                        for(int i = 0; i < Costanti.array_categorie_selezionate_id.size(); i++){
                                                Costanti.array_categorie_selezionate_id.get(i);
                                                mioUrl = mioUrl + "&CategoryID="+Costanti.array_categorie_selezionate_id.get(i);
                                        }

                                   

                                }else{
                           mioUrl = "http://www.miosito.it/miofile.aspx?Province="+Costanti.PROVINCIA;
                           Costanti.array_categorie_selezionate.add("Moda e Costume");
                             // aggiungo alla lista le variabili
                                }
                            // chiamo la pagina che mi da una risposta.
                                HttpPost httpPost = new HttpPost(mioUrl);
                            HttpResponse response = httpClient.execute(httpPost, localContext);
                         
                            InputStream in = response.getEntity().getContent();
                           
                            DocumentBuilder builder = DocumentBuilderFactory.newInstance()
                                    .newDocumentBuilder();
                            Document doc = builder.parse(in);
                            String[] nomi = new String[4];
                            nomi[0] = "lat";
                            nomi[1] = "lng";
                            nomi[2] = "store_name";
                            nomi[3] = "seller_address";
                            if (doc != null) {
                                // dichiaro n3 per la lunghezza dell'item principale di quello che devo selezionare.
                               
                                NodeList n3 = doc.getElementsByTagName("promo");
                                        NodeList n2 = doc.getElementsByTagName("promo");
                                for (int i = 0; i < n3.getLength(); i++) {
                                               
                                        HashMap<String, String> map = new HashMap<String, String>();
                                        for( int num=0; num < nomi.length; num++){
                                        n2 = doc.getElementsByTagName(nomi[num]);

                                                if (n2.getLength() > 0) {
                                                Node node = n2.item(i);

                                            contenuto_nodo = node.getTextContent();
                                            array_contenuto_nodo.add(contenuto_nodo+"///");

                                           
                                                        if(nomi[num].equals("lng")){
                                                        map.put(KEY_LNG, node.getTextContent());
                                                        array_lng.add(node.getTextContent());
                                                        }
                                                       
                                                        if(nomi[num].equals("lat")){
                                                        map.put(KEY_LAT, node.getTextContent());
                                                        array_lat.add(node.getTextContent());
                                                        }
                                                       
                                                        if(nomi[num].equals("store_name")){
                                                        map.put(KEY_STORE_NAME, node.getTextContent());
                                                        array_store_name.add(node.getTextContent());
                                                        }
                                                        if(nomi[num].equals("seller_address")){
                                                        map.put(KEY_SELLER_ADDRESS, node.getTextContent());
                                                        array_seller_address.add(node.getTextContent());
                                                        }
                                                       
//                                                      if(nomi[num].equals("discount")){
//                                                      map.put(KEY_DISCOUNT, node.getTextContent());
//                                                      }
//                                                     
//                                                      if(nomi[num].equals("discounted_price")){
//                                                      map.put(KEY_DISCOUNTED_PRICE, node.getTextContent());
//                                                      }
//                                                      if(nomi[num].equals("description")){
//                                                      map.put(KEY_DESCRIPTION, node.getTextContent());
//                                                      }
                                                       
                                                        System.out.println("sto elaborando"+ num);

                                                        }

                                                n2 = doc.getElementsByTagName("promo");
                                                }      
//                                      n2 = doc.getElementsByTagName("promo");
//                                      if (n2.getLength() > 0) {
//                                          Node node = n2.item(i);
//                                             node = node.getFirstChild();
//                                           map.put(KEY_TITLE_OFFERTA, node.getTextContent());
//                                      }
                                        songsList.add(map);
                                        //                                              array_prova.add(array_prova+" ");
                                           
                                }

                           
                            System.out.println("array_titolo_categoria_home is: "  + array_contenuto_nodo );
                           
                            controllo_login_tempo = "finito";
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }


                       
                        return null;

                }
               
                protected void onPostExecute(Void... params) {
                       
                }
               
                }


}
       

Grazie per l'aiuto!!!
« Ultima modifica: 20 Maggio 2013, 15:46:46 CEST da Ray13 »

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:MapView Api v2 - Problema api precedenti
« Risposta #1 il: 19 Maggio 2013, 02:06:22 CEST »
0
Per rendere il tutto retrocompatibile devi usare il SupportMapFragment in luogo del normale MapFragment:
http://developer.android.com/reference/com/google/android/gms/maps/SupportMapFragment.html