Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- 오버로딩
- struts2
- JSP
- JavaScript
- 에러페이지
- mybatis
- OGNL
- HTML
- 전화걸기
- paint
- Graphic
- 이클립스
- oracle
- Android
- 생성자
- 국제화
- Spring
- AWT
- Java
- 기본
- 어노테이션
- 클래스
- 안드로이드
- Menu
- 예외처리
- 메서드
- layout
- Eclips
- 배열
- 메소드
Archives
- Today
- Total
note
구글맵에 마커 표시하기(위치 지정) 본문
위치기반 서비스 어플리케이션을 만든다면 이 기능은 일반적으로 써야 될겁니다
사용된 이미지(이미지는 res\mdpi 폴더에 넣으면 됩니다)
기본적으로 manifest에서 apllication -> uses library -> 구글맵 선택( 이전게시물 참고)
해야됩니다
<?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 {
private Drawable marker = null;
private List items = new ArrayList();
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.01.17 |
|---|---|
| Intent 사용하여 화면 이동 (0) | 2012.01.17 |
| 구글맵 사용하기 (0) | 2012.01.17 |
| 이클립스 구글맵 api 설치하기 및 자신의 위치 알아내기(경도,위도) (0) | 2012.01.17 |
| SQLite (0) | 2012.01.13 |