Tech. Forum 개발자들을 위한 정보 공유의 장입니다
닫기

Tech.Forum

I/System.out: (HTTPLog)-Static: isSBSettingEnabled false이 뜨면서 진행이 안됩니다.

#1

안녕하세요 이제막 자바를 배우기 시작한 초보입니다. 다름이 아니라 GPS를 이용해 현재위치를 얻어 출발지로 설정 후 임의로 정해준 도착지 위치까지 보행자 경로를 지도에 표시하고 싶습니다. 즉 출발지 업데이트 버튼을 누른 후 현재위치를 출발지로 지정하고 길 찾기 버튼을 눌러 경로를 표현하고 싶습니다. 아래는 코드입니다.

public class MainActivity extends AppCompatActivity implements TMapGpsManager.onLocationChangedCallback, View.OnClickListener {
    private Context mContext = null;

    private TMapData tmapdata = null;
    private TMapGpsManager tmapgps = null;
    private TMapView tmapview = null;
    private static String mApiKey = "앱키";

    private Button bt_find;
    private Button bt_set;
    private EditText bt_fac_option;

    private TMapPoint tMapPointStart = new TMapPoint(37.570841, 126.985302); // SKT타워(출발지)
    private TMapPoint tMapPointEnd = new TMapPoint(37.551135, 126.988205); // N서울타워(목적지)

    @Override
    public void onLocationChange(Location location) {
            tMapPointStart.setLatitude(location.getLatitude());
            tMapPointStart.setLongitude(location.getLongitude());
            tmapview.setLocationPoint(location.getLongitude(),location.getLatitude());
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mContext = this;

        bt_find = (Button)findViewById(R.id.bt_find_path);    //길찾기 버튼
        bt_set = (Button)findViewById(R.id.bt_set_start);     //출발지 업데이트 버튼
        bt_fac_option = (EditText)findViewById(R.id.editText);

        LinearLayout linearLayout = (LinearLayout)findViewById(R.id.map_view);
        tmapview = new TMapView(this);

        linearLayout.addView(tmapview);
        tmapview.setSKTMapApiKey(mApiKey);

        /* 현재 보는 방향*/
        tmapview.setCompassMode(true);

        /* 현위치 아이콘표시 */
        tmapview.setIconVisibility(true);

        /*줌 레벨*/
        tmapview.setZoomLevel(15);

        /* 지도 타입 */
        tmapview.setMapType(TMapView.MAPTYPE_STANDARD);

        /*언어 설정 */
        tmapview.setLanguage(TMapView.LANGUAGE_KOREAN);

        tmapgps = new TMapGpsManager(MainActivity.this); // 단말의 위치탐색을 위한 클래스
        tmapgps.setMinTime(1000); // 위치변경 인식 최소시간 설정
        tmapgps.setMinDistance(5); // 위치변경 인식 최소거리 설정
        tmapgps.setProvider(tmapgps.GPS_PROVIDER); // 위성기반의 위치 탐색
        if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED){
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, 1); //위치권한 탐색 허용 관련 내용
            }
            return;
        }
        tmapgps.OpenGps();

        bt_find.setOnClickListener(this);
        bt_set.setOnClickListener(this);
    }
    public void find_path() {
        new Thread(new Runnable() {
            public void run() {
                //마커생성
                TMapMarkerItem markerItem1 = new TMapMarkerItem();
                TMapMarkerItem markerItem2 = new TMapMarkerItem();

                // 마커 아이콘
                Context context = getApplicationContext();
                Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.mipmap.poi_dot);

                // 3번째 파라미터 true == 지도 이동 Animation 사용
                tmapview.setCenterPoint(tMapPointStart.getLongitude(), tMapPointStart.getLatitude());

                //마커1(출발지)
                markerItem1.setIcon(bitmap); // 마커 아이콘 지정
                markerItem1.setPosition(0.5f, 1.0f); // 마커의 중심점을 중앙, 하단으로 설정
                markerItem1.setTMapPoint(tMapPointStart); // 마커의 좌표 지정
                markerItem1.setName("출발지"); // 마커의 타이틀 지정

                //마커2(도착지)
                markerItem2.setIcon(bitmap); // 마커 아이콘 지정
                markerItem2.setPosition(0.5f, 1.0f); // 마커의 중심점을 중앙, 하단으로 설정
                markerItem2.setTMapPoint(tMapPointEnd); // 마커의 좌표 지정
                markerItem2.setName("N서울타워"); // 마커의 타이틀 지정

                //경로안내
                try {
                    TMapData tmapdata = new TMapData();
                    TMapPolyLine tMapPolyLine = tmapdata.findPathDataWithType(TMapData.TMapPathType.PEDESTRIAN_PATH, tMapPointStart, tMapPointEnd);
                    tMapPolyLine.setLineColor(Color.BLUE);
                    tMapPolyLine.setLineWidth(5);
                    ArrayList<TMapPoint> alTMapPoint = new ArrayList<TMapPoint>();
                    for (int i = 0; i < alTMapPoint.size(); i++) {
                        tMapPolyLine.addLinePoint(alTMapPoint.get(i));
                    }
                    tmapview.addTMapPolyLine("Line1", tMapPolyLine);
                    tmapview.addMarkerItem("markerItem1", markerItem1); // 지도에 마커 추가
                    tmapview.addMarkerItem("markerItem2", markerItem2); // 지도에 마커 추가

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
        Toast.makeText(MainActivity.this,"길찾기 완료" ,Toast.LENGTH_SHORT).show();
    }

    public void update_start(){
        new Thread(new Runnable() {
            public void run() {
                tMapPointStart = tmapgps.getLocation();
            }
        }).start();
        Toast.makeText(MainActivity.this,"출발지 변경 완료" ,Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onClick(View view) {
        switch ( view.getId()) {
            case R.id.bt_find_path:
                find_path();
                break;
            case R.id.bt_set_start:
                update_start();
                break;
        }
    }
}

현재위치를 출발지로 설정하는 출발지 업데이트 버튼을 누른 후 길 찾기 버튼을 누르면 I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 라는 로그가 계속 뜨면서 원하는 결과가 안나옵니다.
이틀동안이나 여기서 헤메고 있습니다. 도와주세요…

2019-11-13%20234550

0 Likes

#2

안녕하세요.

T map API 운영담당자입니다.

문의 하신 내용의 isSBSettingEnabled false 로그 내용은 네트워크 연결과정에서
메인스레드에 과한작업을 줄 경우 발생합니다. 네트워크 연결 과정을 새로운 Thread(스레드) 또는,
asyncTask를 통해 작업하시면 이를 해결 하실수 있으실 겁니다.
또한, 말씀하신 코드를 테스트실행 해본 결과 정상적으로 길찾기가 완료 되었습니다.
문의 하신 애러 내역은 프로젝트를 동작하는데 어떠한 영향도 끼치지 않는것으로 보입니다.

따라서, 캡쳐된 화면을 봤을때, 지도가 출력되지 않음으로 세 가지를 확인해 보 실 필요가 있습니다.

1)mApiKey = “앱키” 의 내용에 정확한 AppKey를 넣었는지.

2)ManiFaest.xml에 permission을 추가 하였는지.

3)Gps정보를 정상적으로 받아오기 전에 길 찾기를 실행 하였는지.

이와 같이 세 가지 사항을 검토하시고 진행 해보시길 바랍니다.
아래의 링크를 참고하시면 도움이 되실겁니다.


[Tmap Android SDK 개발준비 Guide]
http://tmapapi.sktelecom.com/main.html#android/guide/androidGuide.sample4


감사합니다.

0 Likes