blogfiles-1.naver.net.png  

package kr.hews.hellomap;

import! java.util.List;

import! android.graphics.Bitmap;
import! android.graphics.BitmapFactory;
import! android.graphics.Canvas;
import! android.graphics.Point;
import! android.os.Bundle;
import! android.view.Gravity;
import! android.view.ViewGroup;
import! android.widget.ZoomControls;

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.Projection;

// 지도 통제를 위한 클래스
// MapActivity을 상속
public class HelloMapActivity extends MapActivity
{
  // 기록의 태그
  static final String TAG = "HelloMapActivity";

  // 지도의 초기 값
  static final int INITIAL_ZOOM_LEVE = 15;
  static final int INITIAL_LATITUDE = 35455281;
  static final int INITIAL_LONGITUDE = 139629711;

  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);

    // MapView 포함 레이아웃 설정
    setContentView(R.layout.main) // MapView에서 컨트롤러를 검색
    MapView map_view = (MapViewfindViewById(R.id.mapview);

    // 지도의 확대를 제어하는 줌 컨트롤러를 배치
    ZoomControls zoom = (ZoomControlsmap_view.getZoomControls();
    ViewGroup.LayoutParams layout = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
    zoom.setLayoutParams(layout);
    zoom.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
    map_view.addView(zoom);

    // 위치와 확대 수준의 초기 상태를 설정
    MapController controller = map_view.getController();
    GeoPoint point = new GeoPoint(INITIAL_LATITUDE, INITIAL_LONGITUDE);
    controller.setCenter(point);
    controller.setZoom(INITIAL_ZOOM_LEVE);

    // 이미지를 지도상에 표시
    setOverlay(point);
  }

  // 경로 정보를 표시하는 경우 true를 반환
  // 그렇지 않으면 false를 반환
  protected boolean isRouteDisplayed()
  {
    return false;
  }

  private void setOverlay(GeoPoint point)
  {
    // Overlay 클래스를 생성
    Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.man);
    IconOverlay overlay = new IconOverlay(icon, point);

    // 생성한 Overlay 클래스 추가
    MapView map_view = (MapViewfindViewById(R.id.mapview);
    List<Overlay> overlays = map_view.getOverlays();
    overlays.add(overlay);
  }

  // 지도에 표시되는 오버레이
  private class IconOverlay extends Overlay
  {
    // 그릴 아이콘
    Bitmap mIcon;
    int mOffsetX;
    int mOffsetY;

    // 아이콘을 표시할 위치
    GeoPoint mPoint;

    IconOverlay(Bitmap icon, GeoPoint initial)
    {
      // 아이콘과 아이콘의 중심 오프셋
      mIcon = icon;
      mOffsetX = - icon.getWidth() 2;
      mOffsetY = - icon.getHeight() 2;
      mPoint = initial;
    }

    // 지도 탭 때 호출되는
    @Override
    public boolean onTap(GeoPoint point, MapView mapView)
    {
      // 도청 위치를 기록한다
      mPoint = point;
      return super.onTap(point, mapView);
    }

    // 지도를 그릴 때, shadow = true, shadow = false를 2 번 호출
    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow)
    {
      super.draw(canvas, mapView, shadow);
      if (!shadow)
      {
        // 지도상의 위치와 그린의 Canvas의 좌표 변환
        Projection projection = mapView.getProjection();
        Point point = new Point();
        projection.toPixels(mPoint, point);
        point.offset(mOffsetX, mOffsetY);

// 아이콘 그리기
        canvas.drawBitmap(mIcon, point.x, point.y, null);
      }
    }
  };
}

 

 

AndroidManifest.xml

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="kr.hews.hellomap" android:versionCode="1" android:versionName="1.0.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name">
  <activity android:name=".HelloMapActivity" android:label="@string/app_name">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <!-- Google에서 제공하는 라이브러리를 추가 -->
  <uses-library android:name="com.google.android.maps"></uses-library>
 </application>
 <!-- 인터넷 액세스 권한을 추가 -->
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
 <uses-sdk android:minSdkVersion="2"></uses-sdk>
</manifest>

 

/res/layout/main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" >
  <!-- 맵. 가져온 API 키를 설정 -->
  <com.google.android.maps.MapView
     android:id="@+id/mapview"
     android:layout_width="fill_parent" 

 android:layout_height="fill_parent"
     android:enabled="true"
     android:clickable="true"
     android:apiKey="0zswJWbqwWhwy8YAYyibhFQHiXTmsVvWumcDfBQ" />
</LinearLayout>

創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()