반응형
제 포스팅 3편을 봐주시면 감사하겠습니다.
3편 - 안드로이드 Volley 공공데이터 가져오기 (3)- 구글맵 설정
구글맵을 설정하셨고 공공데이터의 위도 경도를 기반으로
구글맵에 다중 마커를 찍어봅시다.
수원 전기차 충전소의 json파일 일부입니다.
위의 보면 latitude랑 longtitude가 있는데
latitude가 위도 longtitude가 경도입니다. 이 데이터를 이용하여 마커를 표시합니다.
MainActivity.java
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity
implements OnMapReadyCallback {
private static RequestQueue requestQueue;
private String URL = "http://apis.data.go.kr/3740000/suwonEvChrstn/getdatalist?serviceKey=본인의 인증키&numOfRows=30&pageNo=0&sortKey=chrstnType&filterKey=chrstnType&filterValues=DC%EC%BD%A4%EB%B3%B4&type=json";
private Gson gson;
private Example example;
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(requestQueue == null){
requestQueue = Volley.newRequestQueue(getApplicationContext());
}
Request();
}
public void Request(){
StringRequest request = new StringRequest(
Request.Method.GET,
URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.v("태그","리스폰"+response);
gson = new Gson();
example = gson.fromJson(response,Example.class);
Map();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v("태그","에러"+error.getMessage());
}
}) {
@Override
protected Map<String,String> getParams() throws AuthFailureError {
Map<String,String> param = new HashMap<String,String>();
return param;
}
};
request.setShouldCache(false);
requestQueue.add(request);
}
public void Map(){
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().
findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(final GoogleMap googleMap){
mMap = googleMap;
LatLng SOOWAN = new LatLng(Double.valueOf(example.getItems().get(0).getLatitude()), Double.valueOf(example.getItems().get(0).getLongitude()));
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(SOOWAN);
mMap.addMarker(markerOptions);
for(int i = 1; i < example.getItems().size(); i++) {
SOOWAN = new LatLng(Double.valueOf(example.getItems().get(i).getLatitude()), Double.valueOf(example.getItems().get(i).getLongitude()));
markerOptions.position(SOOWAN);
mMap.addMarker(markerOptions);
}
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(SOOWAN,10));
}
}
onMapReady부분에서
반복문을 썼습니다. 따라서 다중마커가 표시됩니다.
실행결과
다중마커가 표시됐습니다~
'Coding > Android' 카테고리의 다른 글
안드로이드 aab 파일 프로그램없이 실행시키기 (0) | 2022.09.05 |
---|---|
안드로이드 네이버 지도 띄우기 (0) | 2022.08.20 |
안드로이드 Volley 공공데이터 가져오기 (3)- 구글맵 설정 (0) | 2022.05.31 |
안드로이드 Volley 공공데이터 가져오기 (2)- Volley 설정 및 공공데이터 가져오기 (0) | 2022.05.28 |
안드로이드 Volley 공공데이터 가져오기 (1) - 공공데이터 설정 (0) | 2022.05.28 |