วันพฤหัสบดีที่ 2 ธันวาคม พ.ศ. 2553

2.4 Map View

แล้วนำมาประยุกต์ปักเป็น 2 หมุด

ในการใช้งาน Google Map บน Android นั้น เราจะต้องขอ Android Map API key ก่อน จึงจะสามารถสร้าง application ที่เรียกใช้ map ได้

ขั้นตอนที่ 1 - get ค่า MD5 ของเครื่องเรา
ที่ C:\Users\acer\.android ให้สั่ง

 keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

จะขึ้นข้อความว่า

androiddebugkey, De 1, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): 10:E5:6D:B7:E0:8B:FB:90:A0:A0:33:4B:4C:C1:A6:2B

ขั้นตอนที่ 2 - sign up for key
ไปที่เว็บ http://code.google.com/intl/th-TH/android/maps-api-signup.html แล้วจะได้ Android Maps API key เช่น  0D8Ku-VRcQHpvam2-De5gZ39W7ZTTR-f_ujKhPW







 << โครงสร้างของ folder
















ขั้นตอนที่ 3 - เขียน MyMapView.java, HelloItemizedOverlay.java และ main.xml ดังนี้


MyMapView.java

package ubu.example.MyMapView;

import java.util.List;

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;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.widget.LinearLayout;

public class MyMapView extends MapActivity {
  
    LinearLayout linearLayout;
    MapView mapView;
    MapController mapController;
    List<Overlay> mapOverlays;
    Drawable drawable;
    HelloItemizedOverlay itemizedOverlay;
    GeoPoint geoPoint;
  
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);      
        mapOverlays = mapView.getOverlays();
      
      
        // 1st marker: red
        //         
        drawable = this.getResources().getDrawable(R.drawable.markred);
        itemizedOverlay = new HelloItemizedOverlay(drawable);     
        GeoPoint point = new GeoPoint(15277572, 104799721);
        OverlayItem overlayitem = new OverlayItem(point, "title1", "msg1");
        itemizedOverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedOverlay);


        // 2nd marker: orange
        //
        drawable = this.getResources().getDrawable(R.drawable.markorange);       
        itemizedOverlay = new HelloItemizedOverlay(drawable);      
        GeoPoint point2 = new GeoPoint(12277572, 84799721); 
        OverlayItem overlayitem2 = new OverlayItem(point2, "title2", "msg2");
        itemizedOverlay.addOverlay(overlayitem2);       
        mapOverlays.add(itemizedOverlay);
       
        // กำหนดตำแหน่งเริ่มต้นในการแสดง  map
        //
        geoPoint = new GeoPoint(15277572, 104799721);
       
        mapController = mapView.getController();
        mapController.animateTo(geoPoint);
        mapController.setZoom(17);
        mapView.invalidate();
       
    }
  
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
  
}

HelloItemizedOverlay

package ubu.example.MyMapView;

import java.util.ArrayList;
import android.graphics.drawable.Drawable;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class HelloItemizedOverlay extends ItemizedOverlay {
   
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

   
    public HelloItemizedOverlay(Drawable arg0) {
        //super(arg0);
        super(boundCenterBottom(arg0));
        // TODO Auto-generated constructor stub
    }
   
    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();
    }   
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainlayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:apiKey="0D8Ku-VRcQHpvam2-De5gZ39W7ZTTR-f_ujKhPW"
    />

</RelativeLayout>

ไม่มีความคิดเห็น:

แสดงความคิดเห็น