Using MapView on Android Application

In this tutorial, I'll try to explain how to use  google map on android application using Google Map API's V1.
First you must get an API Key at http://code.google.com/android/maps-api-signup.html before you debugging your application. You must enter your md5 debug.key, you can search on Google how to get md5 API Key.

first you must add some code to your application manifest. That's code will give your application permission to access google maps.

 //permission to get access for internet and location  
 <uses-permission android:name="android.permission.INTERNET"/>  
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
 <application>  
 . . . . . . . .  
 <uses-library android:name="com.google.android.maps" />  
 . . . . . . . .   
 </application>  

After you've been add that's code to your application manifest, now you can add to your application layout. Like the code bellow:
           <com.google.android.maps.MapView   
          android:id="@+id/mapView"  
          android:layout_width="290dp"  
          android:layout_height="180dp"           
          android:enabled="true"  
          android:clickable="true"  
          android:layout_gravity="center"  
          android:apiKey="YOUR API KEY PUT HERE" />  

Let's cook the code on your java activity. I'm using GPS to get the location using MyLocation class that's I've been write before. Check my another blog post on Using GPS Satellite.
Declare some variable that's its will be used on mapview.


 public class TodoAddActivity extends MapActivity {  
      MapView mapView;   
      MapController mc;  
   GeoPoint p;  

Code for set MapView. In this code I assume that's you've a Latitude and Longitude value.
      public LocationResult locationResult = new LocationResult(){  
     @Override  
     public void gotLocation(final Location location){  
       //Got the location!  
          Glat = location.getLatitude();  
          Glon = location.getLongitude();  
          mGps.setText(location.getLongitude() + " : " + location.getLatitude());    
          mGps.setEnabled(false);  
          mapView.setVisibility(View.VISIBLE);  
             retrieveLocationButton.setEnabled(true);  
             addnewBtn.setEnabled(true);  
             gpsStatus = true;  
       mapView.invalidate();  
       mc = mapView.getController();  
       p = new GeoPoint(  
         (int) (Glat * 1E6),   
         (int) (Glon * 1E6));  
       mc.animateTo(p);  
       mc.setZoom(17);   
       MapOverlay mapOverlay = new MapOverlay();  
       List<Overlay> listOfOverlays = mapView.getOverlays();  
       listOfOverlays.clear();  
       listOfOverlays.add(mapOverlay);  
       mapView.invalidate();   
       };  
     };  
   class MapOverlay extends com.google.android.maps.Overlay  
   {  
     @Override  
     public boolean draw(Canvas canvas, MapView mapView,   
     boolean shadow, long when)   
     {  
       super.draw(canvas, mapView, shadow);            
       //---translate the GeoPoint to screen pixels---  
       Point screenPts = new Point();  
       mapView.getProjection().toPixels(p, screenPts);  
       //---add the marker---  
       Bitmap bmp = BitmapFactory.decodeResource(  
         getResources(), R.drawable.marker);        
       canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);       
       return true;  
     }  
   }   

There is a Class call MapOverlay. it's use to add marker on your map view. if U don't want an Marker on your map, forget that's class :D. just use that's code, you also can customize your zoom level on mc.setZoom([your value])
     mapView.invalidate();   
     mc = mapView.getController();   
     p = new GeoPoint(   
      (int) (Glat * 1E6),    
      (int) (Glon * 1E6));   
     mc.animateTo(p);   
     mc.setZoom(17);  
Okay. See you in another Android Tutorial.

No comments:

Post a Comment