inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Cùng nhà phát triển Corona Map tạo dịch vụ bản đồ 2

Hiển thị dữ liệu tìm kiếm từ khóa trên bản đồ

인포박스가 생성되지 않아요

Đã giải quyết

381

wjdgus3975

2 câu hỏi đã được viết

1

업로드 페이지에서 마커를 클릭했을 때 인포박스가 생성되지 않습니다.

여러번 다시 해봤는데 그대로네요.. 무엇이 문제인지를 모르겠어요.

도움 요청합니다ㅠ

upload.js 코드입니다.

const mapContainer=document.getElementById("map");
const mapOption={
    center:new daum.maps.LatLng(37.554477,126.970419),
    level:3,
};

let map=new daum.maps.Map(mapContainer, mapOption);

let infoWindow = new daum.maps.InfoWindow({
    zIndex:1,
});

let markerList=[];

let ps=new daum.maps.services.Places();

searchPlaces();

function searchPlaces(){
    let keyword=$("#keyword").val();
    ps.keywordSearch(keyword,placesSearchCB);
}

function placesSearchCB(data, status){
    if(status===daum.maps.services.Status.OK){
        displayPlaces(data);
    }else if(status===daum.maps.services.Status.ZERO_RESULT){
        alert("검색 결과과 존재하지 않습니다.")
        return;
    }else if(status===daum.maps.services.Status.ERROR){
        alert("검색 결과중 오류가 발생했습니다.")
        return;
    }
}

function displayPlaces(data){
    let listEl=document.getElementById("placesList");
    let bounds=new daum.maps.LatLngBounds();

    removeAllChildNodes(listEl);
    removeMarker();


    for(let i=0;i<data.length;i++){
        let lat=data[i].y;
        let lng=data[i].x;
        let address_name=data[i]["address_name"];
        let place_name=data[i]["place_name"];

        const placePosition=new daum.maps.LatLng(lat,lng);
        bounds.extend(placePosition);
        let marker=new daum.maps.Marker({
            position:placePosition,

        });

        marker.setMap(map);
        markerList.push(marker);

        const el=document.createElement("div");
        const itemStr=`
        <div class="info">
            <div class="info_title">
                ${place_name}
            </div>
            <span>${address_name}</span>
        </div>
        `;

        el.innerHTML=itemStr;
        el.className="item";

        daum.maps.event.addListener(marker,"click",function(){
            displayInfowindow(marker,place_name,address_name,lat,lng);
        });

        daum.maps.event.addListener(map,"click",function(){
            infoWindow.close();
        });

        el.onclick=function(){
            displayInfowindow(marker,place_name,address_name,lat,lng);
        };

        listEl.appendChild(el);
    }
    map.setBounds(bounds);
}

function displayInfowindow(marker,place_name,address_name,lat,lng){
    let content=`
    <div style="padding:25px;">
    ${place_name}<br>
    ${address_name}<br>
    <button>onClick="onSubmit('${title}','${address}',${lat},${lng});"등록</button>
    </div>
    `;
    map.panTo(marker.getPosition());
    infoWindow.setContent(content);
    infoWindow.open(map,marker);

}

function onSubmit(title,address,lat,lng){
    $.ajax({
        url:"/location",
        data:{title,address,lat,lng},
        type:"POST",
    }).done((response)=>{
        console.log("데이터 요청 성공");
        alert("성공");
    }).fail((error)=>{
        console.log("데이터 실패");
        alert("실패");
    });
}


function removeAllChildNodes(el){
    while(el.hasChildNodes()){
        el.removeChild(el.lastChild);
    }
}

function removeMarker(){
    for(let i=0;i<markerList.length;i++){
        markerList[i].setMap(null);
    }
    markerList=[];
}

웹앱 nodejs mongodb express mongoose

Câu trả lời 2

0

donghunee

질문 주셔서 감사합니다:)

혹시 브라우저에서 어떻게 에러가 나는지 메세지를 캡쳐해서 보내주실 수 있나요??

그래야 좀 더 빠르게 답변이 가능할 것 같습니다.~!!

 

감사합니다~!!

0

mini0204

function PlacesSearchCB(data, status) {
    if (status === daum.maps.services.Status.OK) {
        displayPlaces(data);
    }else if (status === daum.maps.services.Status.ZERO_RESULT) {
        alert("검색 결과가 존재하지 않습니다");
        return;
    }else if (status === daum.maps.services.Status.ERROR) {
        alert("검색 결과중 오류가 발생했습니다");
        return;
    }
}
 
 
 
 
 
 
 
function displayInfowindow(marker, title, address, lat, lng){
    let content = `
    <div style="padding:25px;">
        ${title}<br>
        ${address}<br>
        <button onClick="onSubmit('${title}','${address}',${lat},${lng});">등록</buttin>
    </div>
    `;
 
그외 infowindow 소문자, 대문자 확인해보세요.

안녕하세요 선생님 도와주세요

0

138

1

marker 크기 관련 질문

0

120

0

upload.css 관련 질문

0

106

1

mongoDB 관련 질문

0

154

1

키워드 검색 데이터 받아오기 강의중 문제 발생

0

246

1

404에러가 뜨네요 ㅠㅠ

1

370

1

카카오 api 발급 및 적용중에 upload 페이지가 뜨지를 않아서요.

0

259

1

키 발급 부탁드립니당!!

0

183

0

코드를 다운받을 수 있는 곳이 있나요?

0

208

0

서버 구축

0

304

0

infowindow_wrap부터 css가 적용이 안돼요

0

249

0

화살표 함수 두번 쓰는 이유가 궁금합니다.

3

226

0

이거 좀 너무 "코드보고 따라치세요" 식 아닌가요?

3

244

1

마커 클러스터 내의 텍스트 속성 지정 방법이 궁금합니다.

0

336

1

로딩 속도를 높이는 방법이 궁금합니다.

0

280

1

헉! 저도 회원가입에서 막혔네요

1

210

1

-g로 설치하는 이유가 있나요?

1

190

1

강의 내용 외 문의

0

176

0

마커 기능 질문

1

170

1

script 태그에 있는 클라이언트 아이디가 github에 공개되지 않도록 올리는 방법이 있을까요?

1

430

1

웹 관련 문의

1

256

1

서버접속시 오류가 발생하네요

1

226

2

지도정보 표시

1

347

1

안녕하세요 강사님. ajax관련 질문을 남기고자 합니다.

1

335

1