Professional Documents
Culture Documents
An article by admin 2 Comments Google cung cp cho chng ta mt cch d dng tch hp Google Maps vo cc ng dng Android. Hm nay chng ta s s tm hiu lm th no nhng Google Maps vo ng dng android ca bn.
2. Th vin Google Map khng phi l mt phn ca th vin Android, chng ta cn phi khai bo th vin trong tp tin AndroidManifest.xml. Ngoi ra chng ta cn phi cho php kt ni internet. M tp tin AndroidManifest.xml ca bn v sa i nh sau. 01 <?xml version="1.0" encoding="utf-8"?> 02 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 03 04 05 06 07 08 09 package="com.androidhive.googlemaps" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" >
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 </manifest> <!-- Allow to connect with internet --> <uses-permission android:name="android.permission.INTERNET" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <activity android:label="@string/app_name" android:name=".AndroidGoogleMapsActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <!-Add Google Map Library --> <uses-library android:name="com.google.android.maps" />
4. By gi bn cn ly kha Google Maps bng cch s dng fingerprint MD5. Truy cp Android Maps API v ly kha da vo fingerprint MD5 ca bn.
5. By gi m tp tin main.xml trong src layout main.xml v chn m sau y. ng qun t kha ca bn. 1 <?xml version="1.0" encoding="utf-8"?> 2 <com.google.android.maps.MapView 3 4 5 6 7 8 9 /> 6. By gi m lp MainActivity ca bn v m rng n t lp MapActivity. 1 public class AndroidGoogleMapsActivity extends MapActivity { xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" android:apiKey="05M-7qOGbEjYduPPUdQgJt9ysL8HToawGdvu_ow"
7. Sau khi m rng Activity ca bn t MapActivity bn cn override isRouteDisplayed() v cng c th t ch xem mc nh ca bn vo main.xml 01 package com.androidhive.googlemaps; 02 03 import android.os.Bundle; 04 import com.google.android.maps.MapActivity; 05 06 public class AndroidGoogleMapsActivity extends MapActivity { 07 08 09 10 11 12 13 14 15 16 17 } 8. By gi chy d n ca bn, bn s thy bn hin th trn thit b ca bn. Nu khng hy lm li tt c cc bc trn. } @Override protected boolean isRouteDisplayed() { return false; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
14 15 16 17 18 19 20 21 22 23 24 } } }
Thm im nh du trn bn
hin th im nh du trn bn , bn cn to ra lp mi m rng t ItemizedOverlay. To lp mi v t tn l nh AddItemizedOverlay.java v vit code sau y. 01 package com.androidhive.googlemaps; 02 03 import java.util.ArrayList; 04 05 import android.content.Context; 06 import android.graphics.drawable.Drawable; 07 import android.util.Log; 08 09 import com.google.android.maps.ItemizedOverlay; 10 import com.google.android.maps.OverlayItem; 11 12 public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> { 13 14 private ArrayList<OverlayItem> mapOverlays
= new ArrayList<OverlayItem>(); 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 } public void addOverlay(OverlayItem overlay) { mapOverlays.add(overlay); this.populate(); } } @Override protected boolean onTap(int index) { Log.e("Tap", "Tap Performed"); return true; } @Override public int size() { return mapOverlays.size(); } @Override protected OverlayItem createItem(int i) { return mapOverlays.get(i); } public AddItemizedOverlay(Drawable defaultMarker, Context context) { this(defaultMarker); this.context = context; public AddItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); } private Context context;
By gi m MainActivity.java (trong trng hp ny l AndroidGoogleMapsActivity.java) v vit code sau y. 1 List<Overlay> mapOverlays = mapView.getOverlays();
2 Drawable drawable = this.getResources().getDrawable(R.drawable.mark_red); 3 AddItemizedOverlay itemizedOverlay = 4 new AddItemizedOverlay(drawable, this); 5 6 OverlayItem overlayitem = new OverlayItem(geoPoint, "Hello", "Sample Overlay item"); 7 8 itemizedOverlay.addOverlay(overlayitem); 9 mapOverlays.add(itemizedOverlay);
06 import android.graphics.drawable.Drawable; 07 import android.util.Log; 08 import android.view.MotionEvent; 09 import android.widget.Toast; 10 11 import com.google.android.maps.GeoPoint; 12 import com.google.android.maps.ItemizedOverlay; 13 import com.google.android.maps.MapView; 14 import com.google.android.maps.OverlayItem; 15 16 public class AddItemizedOverlay extends ItemizedOverlay<OverlayItem> { 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 if (event.getAction() == 1) { GeoPoint geopoint = mapView.getProjection().fromPixels( (int) event.getX(), (int) event.getY()); // latitude double lat = geopoint.getLatitudeE6() / 1E6; // longitude double lon = geopoint.getLongitudeE6() / 1E6; /*................. Add this method ........*/ @Override public boolean onTouchEvent(MotionEvent event, MapView mapView) {
Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show(); 32 } 33 34 35 36 } } return false;