2013-05-17 4 views
3

마커가있는 Google지도를 표시 할 수 있지만 AJAX를 사용하여 부분을 새로 고칠 때지도를 부분적으로 표시 할 수는 없습니다. AJAX 새로 고침 부분에 Google지도 초기화하기

function initialize() { 
var myLatlng = new google.maps.LatLng(-25.363882,131.044922); 
var mapOptions = { 
zoom: 4, 
center: myLatlng, 
mapTypeId: google.maps.MapTypeId.ROADMAP 
} 
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); 

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map, 
    title: 'Hello World!' 
}); 
} 

google.maps.event.addDomListener(window, 'load', initialize); 

그래서 나는 아약스 성공 핸들러 중 하나를 사용하여지도를 초기화 할 수 있습니다

: 나는 아약스를 사용하는 경우 마지막에 마지막 초기화 라인이 발사되지 않기 때문에 그것의 같은데요? 나는 행운과 함께 이것을 시도했지만 문법은 틀릴 것이고 이것을 어디에 넣어야할지 모르겠다. :

$(document).ajaxSuccess(function() { 
    google.maps.event.initialize; 
}); 

아이디어가 있으십니까?

편집 :

내가 링크 remote => true를 추가하여 속성/index.html.erb 페이지의 #response 사업부에 부분 _property_details.html.erb을로드하고있어 이것이 show.js.erb입니다 코드 :

properties/show.js.erb

$("#response").html("<%= escape_javascript(render('property_details')) %>");

구글 코드는 모든 스크립트 태그의 properties/index.html.erb 페이지의 하단에 있습니다.

+0

무엇이'초기화 '입니까? 왜 아약스 성공 안에서 직접 실행할 수 없습니까? –

+0

구글 맵 코드의 시작 부분에있는 함수입니다. 위 코드를 모두 추가했습니다. – railsy

+0

맞습니다.하지만 왜'initialize()'대신'google.maps.event.initialize'를 사용하고 있습니까? 나는 그곳의 논리를 이해하지 못한다. –

답변

5

부분적인 새로 고침이 jQuery로 수행되었다고 가정하면이 작업을 수행해야합니다.

google.maps.event.addDomListener(window, 'load', initialize); 
$(document).ajaxStop(initialize); 
+0

덕분에 아직지도가 없습니다. – railsy

+0

가장 가능성이 높은 jQuery가 부분 재로드를 수행하는 데 사용되지 않습니다. 당신은 부분 재로드에서 콜백을 얻고 거기에서'initialize'를 실행하는 방법을 알아 내야 할 것입니다. –

+0

위의 부분 재로드를위한 코드를 show.js.erb에서 jquery로 추가했습니다 :'$ ("# response") .html ("<% = escape_javascript (render ('property_details')) %>"); ' – railsy