안드로이드 개발 질문/답변
(글 수 45,052)
package kr.ac.jeiu.ysmMapLocationView;
import java.util.ArrayList;
import java.util.List;
import android.graphics.Canvas;
import
android.graphics.drawable.Drawable;
import android.os.Bundle;
import
android.view.View;
//import android.widget.LinearLayout;
import com.google.android.maps.GeoPoint;
import
com.google.android.maps.ItemizedOverlay;
import
com.google.android.maps.MapActivity;
import
com.google.android.maps.MapView;
import
com.google.android.maps.OverlayItem;
import android.content.Intent;
import
android.view.View.OnClickListener;
public class ysmMapLocationView extends MapActivity {
private
MapView mapView;
@Override
protected void onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
mapView = (MapView)
findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setClickable(true);
Drawable
marker =
getResources().getDrawable(R.drawable.mapmarker);
marker.setBounds(0,
0, marker.getIntrinsicWidth(),
marker.getIntrinsicHeight());
InterestingLocations funPlaces = new
InterestingLocations(marker);
mapView.getOverlays().add(funPlaces);
GeoPoint pt = funPlaces.getCenter(); // 첫 번째 점을
가져옴
mapView.getController().setCenter(pt);
mapView.getController().setZoom(15);
}
@Override
protected boolean isLocationDisplayed()
{
return false;
}
@Override
protected boolean isRouteDisplayed()
{
return false;
}
@SuppressWarnings("rawtypes")
class InterestingLocations
extends ItemizedOverlay {
private List<OverlayItem>
locations = new ArrayList<OverlayItem>();
private Drawable
marker;
public
InterestingLocations(Drawable marker)
{
super(marker);
this.marker=marker;
//
관심 지점들 생성
GeoPoint A =
new
GeoPoint((int)(37.47601393611886*1000000),(int)(126.6493284702301*1000000));
GeoPoint
B =
new
GeoPoint((int)(37.475598853509645*1000000),(int)(126.65026187896728*1000000));
locations.add(new OverlayItem(A, "A",
"A"));
locations.add(new OverlayItem(B, "B",
"B"));
populate();
}
@Override
public void draw(Canvas
canvas, MapView mapView, boolean shadow)
{
super.draw(canvas, mapView,
shadow);
boundCenterBottom(marker);
}
@Override
protected OverlayItem
createItem(int i) {
return
locations.get(i);
}
@Override
public int size()
{
return
locations.size();
}
}
public
void myClickHandler(View target)
{
switch(target.getId()) {
case
R.id.zoomin:
mapView.getController().zoomIn();
break;
case
R.id.zoomout:
mapView.getController().zoomOut();
break;
case
R.id.sat:
mapView.setSatellite(true);
break;
case
R.id.street:
mapView.setStreetView(true);
break;
case
R.id.traffic:
mapView.setTraffic(true);
break;
case
R.id.normal:
mapView.setSatellite(false);
mapView.setStreetView(false);
mapView.setTraffic(false);
break;
case
R.id.search:
setOnClickListener(new
OnClickListener(){
public void onClick(View
arg0) {
startActivity(new
Intent(ysmMapLocationView.this,
ViewActivity.class));
}
});
break;
}
}
private void setOnClickListener(OnClickListener onClickListener)
{
// TODO Auto-generated method
stub
}
}
//------------------------버튼
클릭이벤트---------------------------------//
/*
selectButton.setOnClickListener(new
OnClickListener(){
public void onClick(View arg0) {
startActivity(new
Intent(InsertActivity.this,
SelectActivity.class));
}
});
}
}
*/
--------------------------------------------------------------------------------------------------------------------------------------------
위의 파일과
package kr.ac.jeiu.ysmMapLocationView;
import java.io.BufferedReader;
import java.io.IOException;
import
java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import
java.io.PrintWriter;
import java.net.HttpURLConnection;
import
java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import
android.view.View;
import android.view.View.OnClickListener;
import
android.widget.Button;
import android.widget.EditText;
import
android.widget.TextView;
import android.widget.Toast;
public class ViewActivity extends Activity implements OnClickListener
{
String id1, pwd1;
String
myResult;
String[] a;
/** Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button =
(Button)findViewById(R.id.button01);
button.setOnClickListener(this);
}
public void onClick(View v){
HttpPostDate();
}
public void
HttpPostDate(){
try {
EditText sddf
=(EditText)findViewById(R.id.id1);
EditText
sddf1 =(EditText)findViewById(R.id.password1);
id1 = sddf.getText().toString();
pwd1 =
sddf1.getText().toString();
//--------------------------
// URL 설정하고 접속하기
//--------------------------
URL url = new URL("http://***..230.***.231:8080/2011/A/2010141049/jspdb/login_check.jsp");
// URL 설정
HttpURLConnection http = (HttpURLConnection) url.openConnection();
// 접속
//--------------------------
// 전송 모드 설정 - 기본적인 설정이다
//--------------------------
http.setDefaultUseCaches(false);
http.setDoInput(true);
// 서버에서 읽기 모드 지정
http.setDoOutput(true);
// 서버로 쓰기 모드 지정
http.setRequestMethod("POST");
// 전송 방식은 POST
// 서버에게 웹에서 <Form>으로
값이 넘어온 것과 같은 방식으로 처리하라는 걸 알려준다
http.setRequestProperty("content-type", "application/x-www-form-urlencoded");
//--------------------------
// 서버로 값 전송
//--------------------------
StringBuffer buffer = new
StringBuffer();
buffer.append("unicode").append("=").append(id1).append("&");
buffer.append("phonenum").append("=").append(pwd1);
OutputStreamWriter outStream = new
OutputStreamWriter(http.getOutputStream(), "EUC-KR");
PrintWriter writer = new PrintWriter(outStream);
writer.write(buffer.toString());
writer.flush();
//--------------------------
// 서버에서 전송받기
//--------------------------
InputStreamReader tmp = new
InputStreamReader(http.getInputStream(), "EUC-KR");
BufferedReader reader = new BufferedReader(tmp);
//if(reader !=
null){
// Toast.makeText(ViewActivity.this,
"연동성공", 0).show();
//}
//if(reader.equals(null)){
//
Toast.makeText(ViewActivity.this, "연동실패", 0).show();
//}
String str;
str =
reader.readLine();
a = str.split("~");
//while ((str = reader.readLine())
!= null) { // 서버에서 라인단위로 보내줄 것이므로 라인단위로 읽는다
//a =
str.split(",");
// View에 표시하기 위해 라인 구분자 추가
//}
//while ((str =
reader.readLine()) != null) { // 서버에서 라인단위로
보내줄 것이므로 라인단위로 읽는다
// builder.append(str +
",");
// View에 표시하기 위해 라인 구분자 추가
//}
//myResult =
builder.toString();
// 전송결과를 전역 변수에 저장
//((TextView)(findViewById(R.id.check1))).setText(myResult);
//for(int i=0;
i<=1; i++){
((TextView)(findViewById(R.id.check1))).setText(a[0]);
((TextView)(findViewById(R.id.check2))).setText(a[1]);
((TextView)(findViewById(R.id.check3))).setText(a[2]);
((TextView)(findViewById(R.id.check4))).setText(a[3]);
((TextView)(findViewById(R.id.check5))).setText(a[4]);
((TextView)(findViewById(R.id.check6))).setText(a[5]);
((TextView)(findViewById(R.id.check7))).setText(a[6]);
((TextView)(findViewById(R.id.check8))).setText(a[7]);
((TextView)(findViewById(R.id.check9))).setText(a[8]);
((TextView)(findViewById(R.id.check10))).setText(a[9]);
((TextView)(findViewById(R.id.check11))).setText(a[10]);
((TextView)(findViewById(R.id.check12))).setText(a[11]);
((TextView)(findViewById(R.id.check13))).setText(a[12]);
((TextView)(findViewById(R.id.check14))).setText(a[13]);
((TextView)(findViewById(R.id.check15))).setText(a[14]);
((TextView)(findViewById(R.id.check16))).setText(a[15]);
((TextView)(findViewById(R.id.check17))).setText(a[16]);
((TextView)(findViewById(R.id.check18))).setText(a[17]);
// }
//if(a[0]!=null){
// if(a[1] !=
null){
// Toast.makeText(ViewActivity.this,
"로그인중", 0).show();
// Intent
i;
// i = new Intent(ViewActivity.this,
LoginActivity.class);
// i.putExtra("userId",
a[0]);
// i.putExtra("userPwd",
a[1]);
// startActivity(i);
//
}
} catch (MalformedURLException e) {
Toast.makeText(ViewActivity.this, "실패1", 0).show();
}
catch (IOException e) {
Toast.makeText(ViewActivity.this,
"실패2", 0).show();
} // try
}
}
위 두 파일을 합치려고합니다.
제가 직접 구현하고자 하는 것은 DB에 저장된 위도 경도값을 안드로이드 맵에 불러와 주변에 Marker (핀) 을 꽂는 것인데요.
위 두 자바파일을 어떻게 합쳐야할지 모르겠습니다... 직접 안드로이드 자바파일에 입력을하면 핀은 꽂아지지만
DB에 연동되어 핀을 꼽고싶은데 어떻게해야할지.. 고수분들 조언부탁드립니다.



