Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 14/12/12, 14:22:06
Avatar de Tyulio
Tyulio Tyulio no está en línea
Usuario poco activo
Mensajes: 32
Compra y venta: (2)
 
Fecha de registro: nov 2012
Mensajes: 32
Modelo de smartphone: iPhone 5
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Integrar marcador a mapa

Hola compañeros, estoy liado con temas de mapas y tengo un problema. Debo crear un mapview y meterle unas coordenadas a través de telnet para que posteriormente me centre ese punto en el mapa y le ponga una imagen que al pincharla muestre un mensaje.

Consigo hacer todo pero a la hora de poner la imagen y el mensaje me peta la aplicación. Escribiendo en el código manualmente las coordenadas consigo hacerlo pero a la hora de hacerlo como si fuera real con el GPS, no hay manera.

Os dejo el código a ver si alguien puede echarme una mano.

import java.util.List;

import android.graphics.drawable.Drawable;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;

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 Mapas extends MapActivity {
MapController mc;
MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapas);
MapView mapView = (MapView) findViewById(R.id.mapview);

mapView.setBuiltInZoomControls(true);
mapView.setSatellite(true);
registrarListenerGPS();

}

private void registrarListenerGPS(){
LocationManager mlocManager =
(LocationManager)getSystemService(this.LOCATION_SE RVICE);
LocationListener mlocListener = new GPSListener();
mlocManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}
public class GPSListener implements LocationListener{

@Override
public void onLocationChanged(Location location) {
// Si cambian las coordenadas recibidas del GPS
location.getLatitude();
location.getLongitude();

GeoPoint p = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));

mc.animateTo(p);
mc.setCenter(p);
mc.setZoom(19);

OverlayItem overlayitem = new OverlayItem(p, "Aquí vivo yo", "LAT: " + location.getLatitude() * 1E6 + "\nLON: " + location.getLongitude() * 1E6);
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = getResources().getDrawable(R.drawable.logo);
MapaItemizedOverlay itemizedoverlay = new MapaItemizedOverlay(drawable);
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
}

@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub

}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub

}

}

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}}


Y el otro archivo para el overlay:


import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

@SuppressWarnings("rawtypes")
public class MapaItemizedOverlay extends ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
Context mContext;
public MapaItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
}
public MapaItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
mContext = context;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
@Override
protected boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.show();
return true;
}
}



A ver si consigo hacerlo porque aunque no llegue a tiempo para entregarlo, es ya un reto personal jejeje.


Saludos!!!
Responder Con Cita


Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 23:08:14 (GMT +1)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007