Tecnologia do Blogger.
RSS

[androidbrasil-dev] Google Maps no android Map Activity


Boa noite

Pessoal vocês poderiam me ajudar? Estou tendo que implementar um mapa na minha app só que o mapa não está aparcendo.

Activity FixedMyLocationOverlay (onde ele fixa a posição atual)

package com.br.example.turistandonoserido;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Paint.Style;
import android.graphics.drawable.Drawable;
import android.location.Location;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Projection;

/**
 * Fixes bug with some phone's location overlay class (ie Droid X).
 * Essentially, it attempts to use the default MyLocationOverlay class,
 * but if it fails, we override the drawMyLocation method to provide
 * an icon and accuracy circle to mimic showing user's location.  Right
 * now the icon is a static image.  If you want to have it animate, modify
 * the drawMyLocation method.
 */
public class FixedMyLocationOverlay extends MyLocationOverlay {
   
    private boolean bugged = false;
   
    private Drawable drawable;
    private Paint accuracyPaint;
    private Point center;
    private Point left;
    private int width;
    private int height;
   
    public FixedMyLocationOverlay(Context context, MapView mapView) {
        super(context, mapView);
    }
   
    @Override
    protected void drawMyLocation(Canvas canvas, MapView mapView, Location lastFix, GeoPoint myLocation, long when) {
        if(!bugged) {
            try {
                super.drawMyLocation(canvas, mapView, lastFix, myLocation, when);
            } catch (Exception e) {
                // we found a buggy phone, draw the location icons ourselves
                bugged = true;
            }
        }
       
        if(bugged) {
            if(drawable == null) {
               
                accuracyPaint = new Paint();
                accuracyPaint.setAntiAlias(true);
                accuracyPaint.setStrokeWidth(2.0f);
               
                drawable = mapView.getContext().getResources().getDrawable(R.drawable.ic_maps_indicator_current_position);
                width = drawable.getIntrinsicWidth();
                height = drawable.getIntrinsicHeight();
                center = new Point();
                left = new Point();
            }
           
            Projection projection = mapView.getProjection();
            double latitude = lastFix.getLatitude();
            double longitude = lastFix.getLongitude();
            float accuracy = lastFix.getAccuracy();
           
            float[] result = new float[1];
           
            Location.distanceBetween(latitude, longitude, latitude, longitude + 1, result);
            float longitudeLineDistance = result[0];
           
            GeoPoint leftGeo = new GeoPoint((int)(latitude*1e6), (int)((longitude-accuracy/longitudeLineDistance)*1e6));
            projection.toPixels(leftGeo, left);
            projection.toPixels(myLocation, center);
            int radius = center.x - left.x;
           
            accuracyPaint.setColor(0xff6666ff);
            accuracyPaint.setStyle(Style.STROKE);
            canvas.drawCircle(center.x, center.y, radius, accuracyPaint);
           
            accuracyPaint.setColor(0x186666ff);
            accuracyPaint.setStyle(Style.FILL);
            canvas.drawCircle(center.x, center.y, radius, accuracyPaint);
           
            drawable.setBounds(center.x - width/2, center.y - height/2, center.x + width/2, center.y + height/2);
            drawable.draw(canvas);
        }
    }
}

Actvity TelaMostraMapas tela que reponsável por mostrar o mapa:

package com.br.example.turistandonoserido;

import android.os.Bundle;
import android.widget.Toast;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;

public class TelaMostraMapas extends MapActivity  {
    private MyLocationOverlay myLocationOverlay;
    private MapView mapView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tela_mostra_mapas);
       
        // extract MapView from layout
        mapView = (MapView) findViewById(R.id.mapa);
        mapView.setBuiltInZoomControls(true);

        // create an overlay that shows our current location
        myLocationOverlay = new MyLocationOverlay(this, mapView);

        // add this overlay to the MapView and refresh it
        mapView.getOverlays().add(myLocationOverlay);
        mapView.postInvalidate();
         
    }
   
    @Override
    protected void onResume() {
         super.onResume();
          // when our activity resumes, we want to register for location updates
           myLocationOverlay.enableMyLocation();
    }

    @Override
    protected void onPause() {
        super.onPause();
           // when our activity pauses, we want to remove listening for location updates
           myLocationOverlay.disableMyLocation();
    }
   
    /**
     * This method zooms to the user's location with a zoom level of 10.
     */
    private void zoomToMyLocation() {
        GeoPoint myLocationGeoPoint = myLocationOverlay.getMyLocation();
        if(myLocationGeoPoint != null) {
            mapView.getController().animateTo(myLocationGeoPoint);
            mapView.getController().setZoom(10);
           
        }
        else {
            Toast.makeText(this, "Cannot determine location", Toast.LENGTH_SHORT).show();
        }
    }
   
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

}

Eu revi esse código umas 100 vezes mas não consegui achar o erro, por favor me ajudem!



--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário