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();
}
}
|