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에러내용




<COM.GOOGLE.ANDROID.MAPS.MAPVIEW /> 얘 다 대문자로 쓰신거 아니죠,?