위치기반 서비스 어플리케이션을 만든다면 이 기능은 일반적으로 써야 될겁니다
기본적으로 manifest에서 apllication -> uses library -> 구글맵 선택( 이전게시물 참고)
해야됩니다
사용된 이미지(이미지는 res\mdpi 폴더에 넣으면 됩니다)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.google.android.maps.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="" android:clickable="true" /> </LinearLayout>
package com.commonsware.android.maps; import android.os.Bundle; import java.util.ArrayList; import java.util.List; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.widget.ImageView; 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.MapController; import com.google.android.maps.MapView; import com.google.android.maps.OverlayItem; import com.google.android.maps.MapView.LayoutParams; public class NooYawk extends MapActivity { MapView map; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); map = (MapView) findViewById(R.id.map); // 위도와 경도 정보를 갖는 GeoPoint 객체 생성 GeoPoint gp = getPoint(40.76793169992044, -73.98180484771729); // 위치 (내위치 또는 기준이 되는 위치)를 표시하는 마커를 생성 MapView.LayoutParams mapParams = new MapView.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, gp, MapView.LayoutParams.CENTER); ImageView iv = new ImageView(getApplicationContext()); iv.setImageResource(R.drawable.mymarker); map.addView(iv, mapParams); // 내위치 또는 기준이 되는 위치를 중심으로 표시되는 아이템 // (표시해 주고 싶은 좌표위치 정보(예:관공서)표시 Drawable marker = getResources().getDrawable(R.drawable.marker); marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); // getOverlays() : 지도위에 오버레이될 아이템을 표시하고 // 레이어를 추가하기 위해 레이어 목록 호출 map.getOverlays().add(new SitesOverlay(marker)); // 줌 레벨을 제거하는 Controll 표시 여부 map.setBuiltInZoomControls(true); // 지정된 위치 정보를 갖는 지도를 표시 MapController controller = map.getController(); controller.setCenter(gp); controller.setZoom(17); } private GeoPoint getPoint(double lat, double lon) { return (new GeoPoint((int) (lat * 1000000.0), (int) (lon * 1000000.0))); } @Override protected boolean isRouteDisplayed() { return false; } // ItemizedOverlay : 지도에 보여질 아이템(좌표,제목,간단 설명)의 오버레이 정보처리 // 각 좌표에 마커를 표시 각 아이템의 스크린 탭( 부가정보 링크) // OverlayItem : iItemizedOverlay 클래스에 제공되는 기본 아이템 정보 private class SitesOverlay extends ItemizedOverlay<overlayitem> { private Drawable marker = null; private List<overlayitem> items = new ArrayList<overlayitem>(); public SitesOverlay(Drawable marker) { super(marker); this.marker = marker; items.add(new OverlayItem(getPoint(40.748963847316034, -73.96807193756104), "UN", "United Nations")); items.add(new OverlayItem(getPoint(40.76866299974387, -73.98268461227417), "Lincoln Center", "Home of Jazz at Lincoln Center")); items.add(new OverlayItem(getPoint(40.765136435316755, -73.97989511489868), "Carnegie Hall", "Where you go with practice, practice, practice")); items.add(new OverlayItem(getPoint(40.70686417491799, -74.01572942733765), "The Downtown Club", "Original home of the Heisman Trophy")); // 생성된 OverlayItem 을 목록으로 지정 populate(); } // 지정한 번호에 대해 OverlayItem을 return @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 protected boolean onTap(int i) { Toast.makeText(NooYawk.this, items.get(i).getSnippet(), Toast.LENGTH_SHORT).show(); return true; } //레이어가 처리할 수 있는 항목의 개수를 리턴 @Override public int size() { return items.size(); } } }
'Android > 기본' 카테고리의 다른 글
구글맵 사용하여 위도 경도값 직접입력해서 보기 (0) | 2012.04.28 |
---|---|
Intent 사용하여 화면 이동 (0) | 2012.04.28 |
구글맵 사용하기 (0) | 2012.04.28 |
이클립스 구글맵 api 설치하기 및 자신의 위치 알아내기(경도,위도) (0) | 2012.04.28 |
SQLite (0) | 2012.04.28 |