마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MarkerOptions 배열로 받아오는 법

0 추천
        private void showResult() {
            try {
                JSONObject jsonObject = new JSONObject(mJsonString);
                JSONArray jsonArray = jsonObject.getJSONArray(TAG_JSON);
                int pictureResId = R.mipmap.ic_start;
                HashMap<String, String> hashMap = new HashMap<>();
                MarkerOptions friendMarker[] = new MarkerOptions[2];
                for (int i = 0; i < jsonArray.length(); i++) {

                    JSONObject item = jsonArray.getJSONObject(i);
                    String id = item.getString(TAG_ID);
                    String name = item.getString(TAG_NAME);
                    String longitude = item.getString(TAG_LONG);
                    String latitude = item.getString(TAG_LATI);


                    hashMap.put(TAG_NAME, name);
                    hashMap.put(TAG_LONG, longitude);
                    hashMap.put(TAG_LATI, latitude);

                    mArrayList.add(hashMap);
                }
                if (friendMarker1 == null) {

                    
                    HashMap get = new HashMap();
                    double flongitude2;
                    double flatitude2;
                    
                    for (int j = 0; j < mArrayList.size(); j++) {
                        //서버에서 gps위도 경도 받아오기
                        get = (HashMap)mArrayList.get(j);
                         String a = (String)get.get("latitude");
                        String b =(String)get.get("longitude");

                        Log.i(TAG, "제발: " + a + b);

                         flatitude2 = Double.parseDouble(a);
                         flongitude2 =  Double.parseDouble(b);


                        Log.i(TAG, "위도: " + flatitude2 + flongitude2);

                        friendMarker[j].position(new LatLng(flatitude2,flongitude2));
                        friendMarker[j].title("친구 1\n");
                        friendMarker[j].icon(BitmapDescriptorFactory.fromResource(pictureResId));
                        map.addMarker(friendMarker[j]);
                         }
        } else {
            friendMarker1.position(new LatLng(3000, 3000));
        }




            } catch (JSONException e) {

                Log.d(TAG, "showResult : ", e);
            }

        }

    }

MarkerOptions를 사용하여 구글 지도에 friendMarker의 위치를 배열로 받아 서버에서 같은 schedule에 속한모든 친구들의 위치를 받아오려고 하는데 자꾸 배열에서 에러가 나네요 

에러메시지는  java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.MarkerOptions com.google.android.gms.maps.model.MarkerOptions.position(com.google.android.gms.maps.model.LatLng)' on a null object reference 이렇습니다.

배열로 받아서 친구들 모든 위치를 띄우고 싶은데 어떻게 방법이 없을까요?? 도와주세요 부탁드립니다!!

 

jsy (200 포인트) 님이 2017년 9월 11일 질문

1개의 답변

0 추천

마커옵션을 2개로 위에서 제한을 해 놓았네요.

MarkerOptions friendMarker[] = new MarkerOptions[2];

상기 라인을 삭제하고,

            LatLng currentLocation = new LatLng(flatitude2, flongitude2);
            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(currentLocation);
            markerOptions.title("친구 " + i);

            map.addMarker(markerOptions);

이렇게 하면 될 겁니다.

 

Will Kim (43,170 포인트) 님이 2017년 9월 12일 답변
친절하게 답변해주셔서 정말 감사드립니다!!
말씀하신대로 해보았더니 서버에는 2친구의 위치가 모두 들어있어 로그로 출력되는데 지도 상에는 가장 최근에 추가한 친구의 위치 하나만 뜨는데 혹시 이부분은 어떻게 해결하는지 도와주시면 정말 감사하겠습니다
...