경로를 그리는 코드인데요~
이클립스상에 코드 오류는 없는데~ㅠ
안드로이드 에뮬실행시 바로 쏘리가 나와서 실행자체가 안되버리네요~ㅠ
어디가 오류가 난건지 좀 도움부탁드립니다!
DrawPath.java
package me.DrawPath.me;
import java.util.List;
import me.DrawPath.R;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
import android.os.Bundle;
public class DrawPath extends MapActivity {
MapView mapView;
MapController mapController;
GeoPoint geoPoint;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView)findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapController = mapView.getController();
geoPoint = new GeoPoint(37372005,126632843);
mapController.setCenter(geoPoint);
mapController.setZoom(14);
List<Overlay> overlays = mapView.getOverlays();
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
overlays.add(myLocationOverlay);
myLocationOverlay.enableMyLocation();
mapView.getOverlays().add(new OverlayLine());
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
---------------------------------------------------------------------------------------------------
OverlayLine.java
package me.DrawPath.me;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.StringTokenizer;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
public class OverlayLine extends Overlay{
String[] F; //rout:points 사이 모두 다 가져오는거
String[] T; //x,y같이 잇는거(,)
String[] XPoint;
String[] YPoint;
public static int[] pointx;
public static int[] pointy;
int xindex;
int yindex;
public void xmlParser(){
XmlPullParser xpp = null;
boolean isTrue = false;
StringTokenizer st;
int count = 0;
int index = 0;
int xindex = 0;
int yindex = 0;
try{
//XmlPullParser xpp = null;
URL text = new URL("http://map.daum.net/congsoa/route/getSearchRoute.service?x=418586&y=1076014&x=422198&y=1079004&method=realtime");
InputStream in = text.openStream();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
xpp = factory.newPullParser();
xpp.setInput(in, "utf-8");
}
catch(MalformedURLException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
catch(XmlPullParserException e){e.printStackTrace();}
try{
String sTag;
String ItemName = "";
int eventType = xpp.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT){
switch(eventType){
case XmlPullParser.START_DOCUMENT: break;
case XmlPullParser.END_DOCUMENT: break;
case XmlPullParser.START_TAG:
sTag = xpp.getName();
if(sTag.equals("rout:points")){isTrue = true;} break;
case XmlPullParser.TEXT:
if (isTrue) {
count++;
ItemName = xpp.getText();
F[count] = ItemName;
isTrue = false;
}
break;
}
eventType = xpp.next();
}
}
catch(Exception e){
//Toast.makeText(OverlayLine.this, " 실패:"+e.toString(), 4000).show();
}
for(int i=1;i<=count;i++){
st = new StringTokenizer(F[i]," ");
while(st.hasMoreTokens()){
T[index]=st.nextToken();
index++;
}
}
for(int j=0;j<index;j++){
st = new StringTokenizer(T[j],",");
while(st.hasMoreTokens()){
if(j%2==1){
YPoint[yindex] = st.nextToken();
yindex++;
}
else{
XPoint[xindex] = st.nextToken();
xindex++;
}
}
}
}
public void draw(Canvas canvas, MapView mapView, boolean shadow){
super.draw(canvas, mapView, shadow);
Paint paint = new Paint();
paint.setStrokeWidth(3);
paint.setARGB(255,255,0,0);
paint.setAntiAlias(true);
Point fromPixPoint = new Point();
Point toPixPoint = new Point();
int[] pointx = new int[xindex];
int[] pointy = new int[yindex];
int[] xp_trans = new int[xindex];
int[] yp_trans = new int[yindex];
for(int j=0; j<=xindex; j++){
pointx[j] = Integer.parseInt(XPoint[j]);
pointy[j] = Integer.parseInt(YPoint[j]);
xp_trans[j] = (int) (pointx[j]/2.5/3500*1E6);
yp_trans[j] = (int) (pointy[j]/2.5/3500*1E6);
}
for(int i=0; i<=yindex-2; i++){
(mapView).getProjection().toPixels(new GeoPoint(xp_trans[i], yp_trans[i]), fromPixPoint); // 지리좌표를 화면상의 픽셀좌표로 변환
(mapView).getProjection().toPixels(new GeoPoint(xp_trans[i+1], yp_trans[i+1]), toPixPoint);
canvas.drawLine(fromPixPoint.x, fromPixPoint.y, toPixPoint.x, toPixPoint.y, paint);
}
}
}



