package
com.example.seoulbus;
import
java.io.BufferedInputStream;
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.io.StringReader;
import
java.net.HttpURLConnection;
import
java.net.URL;
import
java.net.URLEncoder;
import
org.xmlpull.v1.XmlPullParser;
import
org.xmlpull.v1.XmlPullParserFactory;
import
android.app.Activity;
import
android.os.AsyncTask;
import
android.os.Bundle;
import
com.google.android.gms.maps.CameraUpdateFactory;
import
com.google.android.gms.maps.GoogleMap;
import
com.google.android.gms.maps.MapFragment;
import
com.google.android.gms.maps.model.BitmapDescriptorFactory;
import
com.google.android.gms.maps.model.LatLng;
import
com.google.android.gms.maps.model.Marker;
import
com.google.android.gms.maps.model.MarkerOptions;
public
class
MainActivity
extends
Activity {
private
GoogleMap mMap;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
.getMap();
String serviceUrl;
String serviceKey;
String strUrl;
serviceKey =
"JwqvsJwdPHY4cnUQ4W3IBqyhMm5eg8A0P2CWGf8fCxBwhu680maF7HsK%2BVMejTbf33vTpcshRTl7FEuKR%2Fghuw%3D%3D"
;
serviceKey = URLEncoder.encode(serviceKey);
String cityCode =
"25"
;
String routeId =
"DJB30300052ND"
;
strUrl = serviceUrl +
"?ServiceKey="
+ serviceKey +
"&cityCode="
+ cityCode +
"&routeId="
+ routeId;
new
DownloadWebpageTask().execute(strUrl);
}
private
class
DownloadWebpageTask
extends
AsyncTask<String, Void, String> {
@Override
protected
String doInBackground(String... urls) {
try
{
return
(String) downloadUrl((String) urls[
0
]);
}
catch
(IOException e) {
return
"다운로드 실패"
;
}
}
protected
void
onPostExecute(String result) {
displayBuspos(result);
}
private
String downloadUrl(String myurl)
throws
IOException {
HttpURLConnection conn =
null
;
try
{
URL url =
new
URL(myurl);
conn = (HttpURLConnection) url.openConnection();
BufferedInputStream buf =
new
BufferedInputStream(
conn.getInputStream());
BufferedReader bufreader =
new
BufferedReader(
new
InputStreamReader(buf,
"utf-8"
));
String line =
null
;
String page =
""
;
while
((line = bufreader.readLine()) !=
null
) {
page += line;
}
return
page;
}
finally
{
conn.disconnect();
}
}
private
void
displayBuspos(String result) {
String routenm =
""
;
String gpslati =
""
;
String gpslong =
""
;
boolean
bSet_routenm =
false
;
boolean
bSet_gpslati =
false
;
boolean
bSet_gpslong =
false
;
try
{
XmlPullParserFactory factory = XmlPullParserFactory
.newInstance();
factory.setNamespaceAware(
true
);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(
new
StringReader(result));
int
eventType = xpp.getEventType();
while
(eventType != XmlPullParser.END_DOCUMENT) {
if
(eventType == XmlPullParser.START_DOCUMENT) {
;
}
else
if
(eventType == XmlPullParser.START_TAG) {
String tag_name = xpp.getName();
if
(tag_name.equals(
"routenm"
))
bSet_routenm =
true
;
if
(tag_name.equals(
"gpslati"
))
bSet_gpslati =
true
;
if
(tag_name.equals(
"gpslong"
))
bSet_gpslong =
true
;
}
else
if
(eventType == XmlPullParser.TEXT) {
if
(bSet_gpslati) {
gpslati = xpp.getText();
bSet_gpslati =
false
;
}
if
(bSet_gpslong) {
gpslong = xpp.getText();
bSet_gpslong =
false
;
}
if
(bSet_routenm) {
routenm = xpp.getText();
bSet_routenm =
false
;
}
displayMap(gpslati, gpslong, routenm);
}
else
if
(eventType == XmlPullParser.END_TAG) {
;
}
eventType = xpp.next();
}
}
catch
(Exception e) {
;
}
}
private
void
displayMap(String gpslati, String gpslong, String routenm) {
double
latitude = Double.parseDouble(gpslati);
double
longitude = Double.parseDouble(gpslong);
final
LatLng LOC =
new
LatLng(latitude, longitude);
mMap.setMyLocationEnabled(
true
);
mMap.addMarker(
new
MarkerOptions().position(LOC));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LOC,
16
));
}
}
}