본문 바로가기
Coding/Android

안드로이드 Volley 공공데이터 가져오기 (4)- 다중 마커

by 루민즈 2022. 6. 2.
반응형

제 포스팅 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부분에서 

반복문을 썼습니다. 따라서 다중마커가 표시됩니다. 

 

실행결과 

 

 

 

다중마커가 표시됐습니다~


Post

다음글 무직자 대출 알아보기 >