Notice
Recent Posts
Recent Comments
Link
관리 메뉴

설.현.아빠

[MapView] 구글 지도 연동하기. 본문

안드로이드/Map

[MapView] 구글 지도 연동하기.

설.현.아빠 2011. 2. 11. 10:50




 

<?xml version="1.0" encoding="utf-8"?>

 

<!-- main.xml -->


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<com.google.android.maps.MapView
 android:id="@+id/mainMapview"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:apiKey="sample api key"
 android:clickable="true"
 />
</LinearLayout>

 

<?xml version="1.0" encoding="utf-8"?>

 

<!-- AndroidManifest.xml -->


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.androidhuman.example.HelloMaps"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloMaps"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>        </activity>

    <uses-library android:name="com.google.android.maps" android:required="true"></uses-library>
</application>
    <uses-sdk android:minSdkVersion="8" />

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
</manifest> 

 

// HelloMaps.java

 

package com.androidhuman.example.HelloMaps;

import java.util.List;

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

public class HelloMaps extends MapActivity {
    List<Overlay> mapOverlays;
    Drawable drawable;
    HelloItemizedOverlay itemizedOverlay;
    LinearLayout linearLayout;
    MapView mapView;
    ZoomControls mZoom;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView)findViewById(R.id.mainMapview);
        
        mapView.setSatellite(true); // 위성사진으로 보여준다.
        mapView.setBuiltInZoomControls(true); // 사용자가 직접 배율을 조정할 수 있게 허용해 준다.
        
        GeoPoint geoPoint = new GeoPoint(37498806,126932621);
        // 원하는 좌표점을 갖는 geoPoint객체 생성.
        
        MapController mapController = mapView.getController();
        mapController.animateTo(geoPoint); // 좌표점으로 이동
        mapController.setZoom(16); // 줌인 단계 설정
        
        // 지도위에 올리려는 모든 Layer는 Overlay클래스를 상속받아 구현되있다.
        mapOverlays = mapView.getOverlays(); // Map View의 overlay list를 얻어온다.
        drawable = this.getResources().getDrawable(R.drawable.androidmarker);
        itemizedOverlay = new HelloItemizedOverlay(drawable);
        
        OverlayItem overlayitem = new OverlayItem(geoPoint, "", "");
        // geoPoint좌표를 이용해서 overlayitem 생성
        
        itemizedOverlay.addOverlay(overlayitem);
        // overlayitem객체를 itemizedOverlay에 추가.
        
        mapOverlays.add(itemizedOverlay);
        // itemizedOverlay를 mapOverlays에 추가.
    }

 @Override
 protected boolean isRouteDisplayed() {
  // TODO Auto-generated method stub
  return false;
 }
}

 

// HelloItemizedOverlay.java

 

package com.androidhuman.example.HelloMaps;

import java.util.ArrayList;

import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;

public class HelloItemizedOverlay extends ItemizedOverlay {

 private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
 public HelloItemizedOverlay(Drawable defaultMarker) {
  super(boundCenterBottom(defaultMarker));
  // 아이콘의 아래의 중간부분이 좌표에 위치하도록 지정함.
 }

 @Override
 protected OverlayItem createItem(int arg0) {
  // TODO Auto-generated method stub
  return mOverlays.get(arg0);
 }

 @Override
 public int size() {
  // TODO Auto-generated method stub
  return mOverlays.size();
 }
 
 public void addOverlay(OverlayItem overlay) {
  mOverlays.add(overlay);
  populate();
  // add()메서드가 호출될 때마다 populate()가 호출 되어야 한다.
  // 각각의 Overlayitem들을 읽어서 그려낼 준비를 한다.
 }

}

 


Comments