SevenMapView.java :  » Geo » 7map » com » equipo7 » sevenmap » Android Open Source

Android Open Source » Geo » 7map 
7map » com » equipo7 » sevenmap » SevenMapView.java
package com.equipo7.sevenmap;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

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.Overlay;
import com.google.android.maps.OverlayItem;

public class SevenMapView extends MapActivity {
  private static final String SERVER = "http://10.0.2.2:8080";
    private static final String URL = SERVER + "/7mapWs/webServices/sevenmapRestWS";
  
  LinearLayout linearLayout;
  MapView mapView;
  List<Overlay> mapOverlays;
  Drawable drawable;
  List<Categoria> categorias = new ArrayList<Categoria>();
  
  Spinner spinnerCategorias;
  
  int idCategoriaSeleccionada = 0;
  
  @Override
  protected boolean isRouteDisplayed() {
      return false;
  }
  
    /** Called when the activity is first created. */
  @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
    mapView.setSatellite(true);
    
      MapController mapControl = mapView.getController();
      mapControl.setZoom(18);
      mapControl.setCenter(new GeoPoint(28482965, -16321859));
      
      mapOverlays = mapView.getOverlays();
      drawable = this.getResources().getDrawable(R.drawable.bluedot);
    
    categorias.add(new Categoria(0,0,"Todas las categoras"));
    categorias.add(new Categoria(1,0,"  Turstico"));
    categorias.add(new Categoria(2,1,"    Playa"));
    categorias.add(new Categoria(3,1,"    Mirador"));
    categorias.add(new Categoria(4,1,"    Restaurante"));
    categorias.add(new Categoria(5,0,"  Cultural"));
    categorias.add(new Categoria(6,5,"    Recinto ferial"));
    categorias.add(new Categoria(7,5,"    Monumento"));
    categorias.add(new Categoria(8,5,"    Punto de inters cultural"));
    categorias.add(new Categoria(9,5,"    Recinto deportivo"));
    categorias.add(new Categoria(10,5,"    Museo"));
    
    actualizarPuntos();
    
        Button actualizar = (Button) findViewById(R.id.Actualizar);
        actualizar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(getBaseContext(), 
                        "Elemento elegido:  " + categorias.get(idCategoriaSeleccionada).getNombre(), 
                        Toast.LENGTH_SHORT).show();
                
                actualizarPuntos();
            }
        });         
      
        spinnerCategorias = (Spinner) findViewById(R.id.Desplegable);
        
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);

        for (Categoria categoria : categorias){
          adapter.add(categoria.getNombre());
        }

        spinnerCategorias.setAdapter(adapter);
        spinnerCategorias.setOnItemSelectedListener(new OnItemSelectedListener()
        {
          public void onItemSelected(AdapterView<?> arg0, 
              View arg1, int arg2, long arg3) 
          {
            idCategoriaSeleccionada = spinnerCategorias.getSelectedItemPosition();
          }

          public void onNothingSelected(AdapterView<?> arg0) {
           }

        });
        
    }

  private void actualizarPuntos() {
    mapOverlays.clear();
    SevenMapItemizedOverlay itemizedOverlay = new SevenMapItemizedOverlay(drawable, this);
    
    for (Punto punto : getPuntosByCategoria(idCategoriaSeleccionada)){
          OverlayItem overlayItem = new OverlayItem(new GeoPoint(punto.getLatitudForGeoPoint(), punto.getLongitudForGeoPoint()), punto.getDenominacion(), punto.getDescripcion());
          itemizedOverlay.addOverlay(overlayItem);
        }      
      
      mapOverlays.add(itemizedOverlay);
      mapView.invalidate();
      
        Toast.makeText(getBaseContext(), 
                itemizedOverlay.size() + " resultados", 
                Toast.LENGTH_LONG).show();
  }
  
  private List<Punto> getPuntosByCategoria(int idCategoria) {
    SevenMapHandler sevenMapHandler = new SevenMapHandler();
       
      int idMunicipio = 0; // todos los municipios
      int idPais = 0;     // todos los pases
      String parametros = idCategoria + "/" + idMunicipio + "/" + idPais;
      
        try {
          URL url = new URL(URL + "/puntos/" + parametros); 
          
          SAXParserFactory spf = SAXParserFactory.newInstance();
      SAXParser sp = spf.newSAXParser();

      XMLReader xr = sp.getXMLReader();
      xr.setContentHandler(sevenMapHandler);
      
      xr.parse(new InputSource(url.openStream()));
    }
    catch(Exception e)
    {
      e.printStackTrace();
      
          Toast.makeText(getBaseContext(), 
                  "Se ha producido un error de conexin con el servidor.", 
                  Toast.LENGTH_LONG).show();
    }
    
    return sevenMapHandler.getPuntos();
  }
  
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.