![]() |
|
| 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 |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
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!!! |
|
|
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 23:08:14 (GMT +1)
HTCMania: líderes desde el 2007





