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

안드로이드 map에 위치 마커를 띄우고 싶습니다.

0 추천
파이어베이스 데이터베이스에
CGV와 메가박스라는 child 2개를 만들고
각각의 child밑에 지점명과 값에는 위경도를 넣어놨습니다.

이 위치정보들을 모두 안드로이드 map에 마커로 띄우고 띄우는데 cgv와 메가박스 마커들이 색상으로 구분이 되도록 하고 싶습니다.

도움좀 주세요ㅠㅜ
익명사용자 님이 2018년 11월 30일 질문

1개의 답변

0 추천

1. valueEventListener 로 각 영화관 노드의 위치값들을 받아옵니다. 

for(Datasnapsoht snapshot : datasnapshot.getchildre()){
     Theater theater = snapshot.getValue(Theater.class);
      setMarker(theater);
}

2. setMarker메소드에서 DB로부터 받아온 위도,경도, 이름등을 꺼내서 마커를 만들어 추가해 줍니다.

public void setMarker(Theater theater){
     double lat = theater.getlatitude();
     double lon = theater.getlongitude();
     LatLng latlng = new LatLng(lat, lon);    
     String name = theater.getname();
     MarkerOptionsmarkerOptions  = new MarkerOptions();
     if(name.equals("CGV"){
            markerOptions.icon(아이콘1);
     }else{
             markerOptions.icon(아이콘2);
     }
     markerOptions.position(latlng);
     mGoogleMap.addMarker(markerOptions); 
}

 

익명사용자 님이 2018년 11월 30일 답변
2018년 11월 30일 수정
package kr.ac.hansung.thetherfinder;

public class Theather {
    private String Location;
    private double Lnt;
    private double Lat;

    public Theather(String Location, double Lnt, double Lat){
        this.Location = Location;
        this.Lnt = Lnt;
        this.Lat = Lat;
    }
    public String getLocation(){
        return Location;
    }
    public void setLocation(String Location){
        this.Location= Location;
    }
    public double getLnt(){
        return Lnt;
    }
    public void setLnt(double Lnt){
        this.Lnt= Lnt;
    }
    public double getLat(){
        return Lat;
    }
    public void setLat(double Lat){
        this.Lat= Lat;
    }

    @Override
    public String toString() {
        return "Lnt = " + Lnt +  ", Lat=" + Lat + ", Location = " + Location;
    }
}

영화관을 지도에 표시하는 theater class작성중입니다.
1번에서 for문 저런형식은 무얼 의미하나요? 제가 아는 for문은 0부터 x까지 1씩증가/감소 해서 중괄호 안에 내용을 반복하는 것입니다.
그리고 theater theather = snapshot.getvalue(theater.class)라고 알려주셨는데
따로 teather.class를 작성해야 하나요?..
1번의 경우는 참조위치의 자식노드들을 순차적으로 순회해서 값을 가져다가 Theater클래스에 넣어주는 반복문입니다. CGV영화관 노드를 참조위치로 하고 value리스너안에 저 반복구문을 넣으면 각 지점노드의 값들을 순회하며 가져오죠. 저런 형태는 foreach구문에 대해 검색해보시면 알 수 있을거에요.

2.번의 괄호안에 들어가는 부분이 지금 댓글에 적어주신 Theater 모델클래스 입니다.
...