안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
안드로이드를 공부하고 있는 대학생입니다.!
지도 어플리케이션을 만들어 보고 있습니다.
현재 지도에서 LocationListener를 이용하여 사용자의 현재 위치를 잡아주는 것까지 진행이 됐습니다.
제가 구현하고 싶은 기능은 사용자가 목적지를 입력하면 목적지의 위치가 지도상에서
마커로 표시 되게 하고 싶은데 어떤 메소드를 사용해야 하는지 감을 못잡겠습니다.
예를 들어 구글 지도 에서 보면 목적지를 지명으로 입력하면 바로 그 위치가 지도상에 표시가 되는데요
위치와 경도를 어떤식으로 잡아줘서 이렇게 구현이 되는지 도무지 모르겠습니다.;;
(구글지도, 다음뷰, 네이버지도는 어떻게 그렇게 잘 만들었는지;;)
인터넷 검색이나 안드로이드 책을 봤지만 원하는 답을 못얻어서 이렇게 질문 올립니다.ㅜㅜ
사소한 정보라도 대환영 입니다^^ 관련 정보 링크걸어 주셔도 감사하겠습니다!




아래와 같은형식으로 오버레이클레스를 만들어주시고요.
package jap.kung;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.Log;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;
@SuppressWarnings("rawtypes")
public class MyItemizedOverlay extends ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context mContext;
// constructor
public MyItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
mContext = context;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
public int size() {
return mOverlays.size();
}
protected boolean onTap(int index) {
final OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setIcon(R.drawable.icon);
//dialog.setMessage(item.getSnippet());
dialog.setPositiveButton("전화걸기", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int index) {
String a[] = item.getTitle().split(";");
Log.e("asdfasdf ", a[1]);
mContext.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ a[1])));
Log.e("tellnum Test nnnnnnnnn",item.getTitle());
}
});
dialog.setNegativeButton("채용정보 보기", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int index) {
Intent i = new Intent(mContext, webview.class);
i.putExtra("http", item.getSnippet());
mContext.startActivity(i);
}
});
dialog.show();
return false;
}
}
overay찍을 함수를 하나 만든후
구글서치같은 서비스를 이용해서 검색정보를 받으신후 json 파싱해서 원하는 데이터를 추출하시고 overay 함수를 통해 화면에 찍으시면 됩니다.
public void overay(String latitude, String longitude, String company, String locations, String phone, String appurl){ Log.e("lovation data :", latitude+":::"+ longitude+"::위경도" + location+"::장소" + company+"::회사명" + phone + appurl+"::번호,url"); mapOverlays = mapView.getOverlays(); GeoPoint point1 = new GeoPoint((int)(Double.parseDouble(latitude)*1E6),(int)(Double.parseDouble(longitude)*1E6)); Drawable drawable = this.getResources().getDrawable(R.drawable.marker); MyItemizedOverlay itemizedoverlay = new MyItemizedOverlay(drawable,this); OverlayItem overlayitem1 = new OverlayItem(point1, company +"\n"+locations+ "\n" + ";"+phone, appurl); itemizedoverlay.addOverlay(overlayitem1); mapOverlays.add(itemizedoverlay); }오버레이된 아이콘에 터치입력 받을시 기능을 정의하고 싶으시면 MyItemizedOverlay 의 onTap 부분을 조정하시면됩니다.
화면에 여러개의 오버레이 아이콘을 올리고 싶으시면 json파싱부분의 for문 안에서 overay함수를 불러주시면 됩니다.
올리신 오버레이를 지우려면 MyItemizedOverlay를 초기화 해주시면 되고요.
구글서치 사용이나 json 파싱, 오버레이 부분은 어렵지 않으니 좋은 결과 있으실겁니다.