안녕하세요 ㅜ
본론부터 말씀드리면 '한국도로공사' 공공 DB를 가져다 구글맵에 전국에있는 휴게소를 마커로 보여주는것(진행중)
자신의 위치 기준 가까운 휴게소 검색기능(구현 예정)
여기서 구글맵에 전국에있는 휴게소를 띄워줘야 하거든요 ㅜ ..
하지만 계속 세계지도만뜨네요 ㅜ..
요청변수 필수 항목인 serviceKey와 type 넣어준 상태입니다
도대체 이유가 뭔지 .. 모르겠네요 ....
소스첨부 합니다 도와주십시오 ㅜ ..
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;
serviceUrl ="http://data.ex.co.kr/openapi/locationinfo/locationinfoRest?serviceKey= &type=xml";
serviceKey= "";
serviceKey = URLEncoder.encode(serviceKey);
String type = "";
strUrl=serviceUrl+"?ServiceKey="+serviceKey+"&type="+type;
new DownloadWebpageTask().execute(strUrl);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
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)
{
displayhupos(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 displayhupos(String result) {
String unitCode = "";
String unitName = "";
String routeNo = "";
String routeName = "";
String xValue = "";
String yValue = "";
boolean bSet_unitNama = false;
boolean bSet_unitCode = false;
boolean bSet_routeNo = false;
boolean bSet_routeName = false;
boolean bSet_xValue = false;
boolean bSet_yValue = 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) {
// System.out.println(i);
// i++;
if (eventType == XmlPullParser.START_DOCUMENT) {
;
} else if (eventType == XmlPullParser.START_TAG) {
String tag_name = xpp.getName();
if (tag_name.equals("uniCode"))
bSet_unitCode = true;
if (tag_name.equals("unitName"))
bSet_unitNama = true;
if (tag_name.equals("routeNo"))
bSet_routeNo = true;
if (tag_name.equals("routeName"))
bSet_routeName = true;
if (tag_name.equals("xValue"))
bSet_xValue = true;
if (tag_name.equals("yValue"))
bSet_yValue = true;
} else if (eventType == XmlPullParser.TEXT) {
if (bSet_unitCode) {
unitCode = xpp.getText();
bSet_unitCode = false;
}
if (bSet_unitNama) {
unitName = xpp.getText();
bSet_unitNama = false;
}
if (bSet_routeNo) {
routeNo = xpp.getText();
bSet_routeNo = false;
}
if (bSet_routeName) {
routeName = xpp.getText();
bSet_routeName = false;
}
if (bSet_xValue) {
xValue = xpp.getText();
bSet_xValue = false;
}
if (bSet_yValue) {
yValue = xpp.getText();
bSet_yValue = false;
displayMap(xValue, yValue,unitName ,routeName);
// System.out.println("x" + xValue + "y" + yValue + "Name" + unitName);
}
} else if (eventType == XmlPullParser.END_TAG) {
;
}
eventType = xpp.next();
}
} catch (Exception e) {
;
}
}
private void displayMap(String xValue,String yValue,String unitName,String routeName)
{
double latitude = Double.parseDouble(xValue);
double longitude = Double.parseDouble(yValue);
/*
LocationManager lm=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
String locationProvider=lm.getBestProvider(new Criteria(),true);
Location location=lm.getLastKnownLocation(locationProvider);*/
final LatLng LOC = new LatLng(latitude,longitude);
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LOC, 5));
Marker mk = mMap.addMarker(new MarkerOptions()
.position(LOC).
icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
.title(unitName)
.snippet(routeName));
mk.showInfoWindow();
}
}
}
API키는 소스 상엔 없지만 10자리 숫자로 이루어진 API키를 넣은 상태입니다
그리고 소스상 요청 URL 주소를 웹브라우저에 그대로 처보면 XML로 잘나옵니다 ㅠ 