cwuMap.java

 
package com.cwuMap;
import android.graphics.drawable.Drawable; 
import android.graphics.Canvas; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.ViewGroup; 
import android.widget.Toast; 
import com.google.android.maps.GeoPoint; 
import com.google.android.maps.ItemizedOverlay; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 
import com.google.android.maps.MyLocationOverlay; 
import com.google.android.maps.OverlayItem; 
import java.util.ArrayList; 
import java.util.List; 
public class cwuMap extends MapActivity {    
 private MapView map=null;     
 private MyLocationOverlay me=null;    
 private ArrayList<GeoPoint> 
 gp = new ArrayList<GeoPoint>();
 
 int cnt = 0;    
 
 @Override   
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState);    
  setContentView(R.layout.main);
  
   initGeoPoint(); 
   
  // 맵뷰에 줌콘트롤러 추가       
   map=(MapView)findViewById(R.id.map);     
   map.getController().setCenter(gp.get(0));   
   map.getController().setZoom(17);     
   ViewGroup zoom=(ViewGroup)findViewById(R.id.zoom);    
   zoom.addView(map.getZoomControls());
   
  //마커      
   Drawable marker=getResources().getDrawable(R.drawable.bluepin);   
   marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());
   
   /*ItemizedOverlay를 상속받은 SitesOverlay(marker)로 리스트를 만들어        
    * map.getOverlays()에 추가         
    */
   map.getOverlays().add(new SitesOverlay(marker)); 
   
   me=new MyLocationOverlay(this, map); //나침반이나 내 위치 표시        
   map.getOverlays().add(me);
 }
 
 private void initGeoPoint() {         
  final GeoPoint Heemang = getPoint(36.582926, 126.663324);         
  final GeoPoint Sinae = getPoint(36.583159,126.662584);         
  final GeoPoint Soosin = getPoint(36.582629,126.66208);         
  gp.add((GeoPoint)Heemang);         
  gp.add((GeoPoint)Sinae);         
  gp.add((GeoPoint)Soosin);     
 }
 
 @Override   
 public void onResume() {        
  super.onResume();             
  me.enableCompass(); //나침반 켜기       
 }
 
 @Override    
 public void onPause() {      
  super.onPause(); //나침반 끄기 , 배터리 절약                   
  me.disableCompass();
 }
 
 @Override    
 protected boolean isRouteDisplayed() {         
  return(false);     
 }
 
 @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {         
  if (keyCode == KeyEvent.KEYCODE_S) {   //위성모드로 전환            
   map.setSatellite(!map.isSatellite());             
   return(true);        
  }
  else if (keyCode == KeyEvent.KEYCODE_Z) { //줌콘트롤러 불러냄             
   map.displayZoomControls(true);            
   return(true);         
  }
  else if (keyCode == KeyEvent.KEYCODE_A) { //다음 마커위치로            
    map.getController().animateTo(gp.get(cnt));            
    if (++cnt == 3) cnt = 0;              
    return(true);        
  }                  
  return(super.onKeyDown(keyCode, event));
 }
 
 private static GeoPoint getPoint(double lat, double lon) {        
  return(new GeoPoint((int)(lat*1e6), (int)(lon*1e6)));  
 }
 
 private class SitesOverlay extends ItemizedOverlay<OverlayItem> {         
  private List<OverlayItem> items=new ArrayList<OverlayItem>();      
  private Drawable marker = null;
  
  public SitesOverlay(Drawable marker) {            
   super(marker);            
   this.marker = marker;                          
   items.add(new OverlayItem(getPoint(36.582926, 126.663324), "Heemang", "희망관"));             
   items.add(new OverlayItem(getPoint(36.583159,126.662584), "Sinae", "신애관"));          
   items.add(new OverlayItem(getPoint(36.582629,126.66208), "Soosin", "수신관"));                
   populate();       
  }
  
  @Override        
  protected OverlayItem createItem(int i) {            
   return(items.get(i));        
  } 
  
  @Override       
  public void draw(Canvas canvas, MapView mapView, boolean shadow) {            
   super.draw(canvas, mapView, shadow);                           
   boundCenterBottom(marker);       
  }
  
  @Override //OverLay 상속받은 클래스에서 지도화면 터치하는 순간 이벤트 받음       
  protected boolean onTap(int i) {            
   Toast.makeText(cwuMap.this, items.get(i).getSnippet(), Toast.LENGTH_SHORT).show();
   return(true);
  }
  
  @Override      
  public int size() {          
   return(items.size());    
  }
 }
}

 

main.xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<COM.GOOGLE.ANDROID.MAPS.MAPVIEW
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/map" android:apiKey="0BdEKbZSiSK5QvmJZcy2P034PuOtzYNZDM8ObGA"
android:clickable="true" />    
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/zoom"
android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" />
</RelativeLayout>


AndroidManifest.xml



        <uses-library android:name="com.google.android.maps" />
        <activity android:name=".cwuMap"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-sdk android:minSdkVersion="7"></uses-sdk>
</manifest>


logcat에러내용