2013-06-15 5 views
0

저는 js 및 코딩을 시작하는 사람이고 Google지도 + 장소 API가있는 웹 사이트를 만들려고합니다. 따라서 "레스토랑이나 바 등"을 입력하면지도 및 사이드 바에서이 비즈니스를 알 수 있습니다.Google지도 및 장소 사이드 바

http://jsbin.com/ayugun/46/edit

모든 코드는 사이드 바 코드없이 잘 작동 :

var side_bar_html = "<a href='javascript:google.maps.event.trigger(gmarkers["+parseInt(gmarkers.length-1)+"],\"click\");'>"+place.name+"</a><br>"; 
    document.getElementById('side_bar').innerHTML += side_bar_html; 

하지만 난 그것을 실행할 수 있도록이 코드를 수리해야합니다. "레스토랑이나 바 등을 입력 할 때" 지도 및 #side_bar에 표시하려면

내 코드에 사이드 바 오류가 있습니까? 내 englsih 죄송

은 아주 잘 아니지만, 영어를 배우고 열심히 배우고

+0

여기는 작동하는 버전이지만 사이드 바가없는 경우 http://jsbin.com/ayugun/48/edit –

답변

0

귀하의 gmarkers 변수가 정의되지 않습니다 coding.thanks. 단순히 'side_bar'에 추가하는 부분에 도달하지 않습니다.

또한 이렇게하지 않으시겠습니까?

var sideClick = jQuery("<a class=side_click href='#'></a>"); 
$(sideClick).html(place.name); 
$("#side_bar").append(sideClick); 
$(sideClick).on("click", function() { 
    google.maps.event.trigger(gmarkers[parseInt(gmarkers.length-1)], "click"); 
}); 

초기 코드의 문제는 - 그것은 (javascript: 종류의 나쁜 관행이라는 사실 외에)을 place 변수에 액세스 할 수 없습니다. 따라서 google.maps.event.addListener(searchBox, 'places_changed', function() {..}에 대한 콜백에 모두 넣으면 이제 place 변수에 액세스 할 수 있고 name 현재 루프의 값 place을 얻을 수 있습니다.

나는 아직도 gmarkers (어쩌면 그것은 markers (misspeling)이어야합니까?)으로 무엇이 있는지 확실하지 않습니다. 그것은 어디에도 선언하지 않았다. 여기

은 (, 그것은 여전히 ​​고장 gmarkers 부분없이) 버전을하고있다 : http://jsbin.com/ayugun/54/

당신은 자바 스크립트 클로저에 대한 자세한 내용을 발견하실 수 있습니다 :
Good answers about it on StackOverflow합니다.
Material from Google docs for the Maps. (이벤트 청취자에서 클로저 사용 헤더 아래 부분). 이 예는 Google지도와 관련되어 있으며 실제 생활에서 폐쇄가 무엇인지 보여주는 데 유용합니다.

+0

감사합니다.하지만 사이드 바 링크를 클릭하면 열려있는 infowindow (modalbox)가 표시되지 않습니까? –

+0

또한 새 검색을 입력 할 때 사이드 바 링크가 변경되지 않으므로 그 이유는 무엇입니까? –

+0

1) "google.maps.event.trigger (gmarkers [parseInt (gmarkers.length-1)],"click ");"를 실행하는 코드 온 콜백을 살펴보십시오. 어느 쪽도 부서지기 쉽습니다. 나는'gmarkers '가 무엇인지 전혀 모른다. 그것은 정의되지 않았다. 어떤 변수를 전달하려고하는지 알아야합니다. 2) 무엇을 의미합니까? 그것은 크롬과 파이어 폭스에서 나에게 적합하다. 새로운 검색이 수행되었을 때 사이드 바에 새로운 링크를 추가한다. 나는 단지 작업 종료를 보여주고, 원하는대로 규칙을 구부릴 수있다. –