안드로이드 개발 질문/답변
(글 수 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에 연동되어 핀을 꼽고싶은데 어떻게해야할지.. 고수분들 조언부탁드립니다.