https://m.blog.naver.com/yandul83/220436066801 이 사이트를 보면서 해봤는데 서울역 마커까진 뜨는데 약국이 안뜨네요ㅠㅠㅠ
도와주세요 오류도 안뜨고 url에도 문제 없는거 같거든요
dto파일 있는데 그냥 X좌표,Y좌표, name getter,setter로 이루어져 있습니다!!
메인
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mGoogleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpMapIfNeeded();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
if (mGoogleMap == null) {
// Try to obtain the map from the SupportMapFragment.
MapFragment mapFragment = (MapFragment)getFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
if (mGoogleMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
PharmParser parser = new PharmParser();
ArrayList<PharmDTO> list = null;
try {
list =parser.apiParserSearch();
} catch (Exception e) {
e.printStackTrace();
}
for(PharmDTO entity : list) {
MarkerOptions options = new MarkerOptions();
options.position(new LatLng(entity.getYpos(), entity.getXpos()));
options.title(entity.getName());
options.icon(BitmapDescriptorFactory.fromResource(R.drawable.pills));
mGoogleMap.addMarker(options);
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
googleMap.moveCamera(CameraUpdateFactory.newLatLng(
new LatLng(37.555744, 126.970431) // 위도, 경도
));
CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
googleMap.animateCamera(zoom); ,
MarkerOptions marker = new MarkerOptions();
marker .position(new LatLng(37.555744, 126.970431))
.title("서울역");
googleMap.addMarker(marker).showInfoWindow();
}
}
파싱
public class PharmParser {
public final static String PHARM_URL = "http://apis.data.go.kr/B551182/pharmacyInfoService/getParmacyBasisList";
public final static String KEY = "':
public PharmParser() {
try {
apiParserSearch();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ArrayList<PharmDTO> apiParserSearch() throws Exception {
URL url = new URL(getURLParam(null));
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
BufferedInputStream bis = new BufferedInputStream(url.openStream());
xpp.setInput(bis, "utf-8");
String tag = null;
int event_type = xpp.getEventType();
ArrayList<PharmDTO> list = new ArrayList<PharmDTO>();
String xpos = null, ypos= null,name=null;
while (event_type != XmlPullParser.END_DOCUMENT) {
if (event_type == XmlPullParser.START_TAG) {
tag = xpp.getName();
} else if (event_type == XmlPullParser.TEXT) {
if(tag.equals("XPos")){
xpos = xpp.getText();
System.out.println(xpos);
}else if(tag.equals("YPos")){
ypos = xpp.getText();
}else if(tag.equals("yadmNm")){
name = xpp.getText();
}
} else if (event_type == XmlPullParser.END_TAG) {
tag = xpp.getName();
if (tag.equals("item")) {
PharmDTO entity = new PharmDTO();
entity.setXpos(Double.valueOf(xpos));
entity.setYpos(Double.valueOf(ypos));
entity.setName(name);
list.add(entity);
}
}
event_type = xpp.next();
}
System.out.println(list.size());
return list;
}
private String getURLParam(String search){
String url = PHARM_URL+"?ServiceKey="+KEY;
if(search != null){
url = url+"&yadmNm"+search;
}
return url;
}
public static void main(String[] args) {
new PharmParser();
}
}