2014-01-27 3 views
0

JQueryUJS를 사용하는 레일 앱에서 AJAX 요청을 만들어 Google지도가 중심에 위치해야하는 위도/경도 좌표를 검색하려고합니다.Google지도 센터 이전을위한 AJAX 응답

AJAX 응답은 javascript를 실행 중으로 반환하지만지도 객체를 직접 조작하지 않거나 클라이언트의 javascript 코드로 함수를 실행하는 것이 변수 또는 함수를 사용할 수 없기 때문에 작동합니다.

기존 변수를 사용할 수없는 이유는 무엇입니까? AJAX 응답을 기반으로지도를 다시 센터링 할 수있는 대안이 있습니까?

다음과 같다 함수를 호출하기 위해 시도하는 코드 :

HTML 단편 :

<form accept-charset="UTF-8" action="/venues" class="new_venue" data-remote="true" id="new_venue" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div> 
    <div id="entry-form" class="left span8"> 
    <input class="btn btn-primary" name="find_address_button" type="submit" value="Find Address" /> 
    <div id='map_canvas' class='map_new' data-default-zoom= 16></div> 
    <input class="btn btn-large btn-primary" name="commit" type="submit" value="Add Venue" /> 
    </div> 
</form> 

페이지로드 JS :

(function() { 
    $(document).ready(function() { 
    var default_zoom, latitude, longitude, map, mapOptions, map_centre, moveToLocation; 
    moveToLocation = function(lat, lng) { 
     var center; 
     center = new google.maps.LatLng(lat, lng); 
     return map.panTo(center); 
    }; 
    latitude = 52; 
    longitude = 0; 
    map_centre = new google.maps.LatLng(latitude, longitude); 
    default_zoom = $("#map_canvas").data("default-zoom"); 
    mapOptions = { 
     center: map_centre, 
     zoom: default_zoom, 
     scrollwheel: false, 
     styles: [ 
     { 
      featureType: "poi", 
      elementType: "labels", 
      stylers: [ 
      { 
       visibility: "off" 
      } 
      ] 
     } 
     ] 
    }; 
    return map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 
    }); 

}).call(this); 

AJAX 응답 :

moveToLocation(-34, 150); 

답변

1

스크립트로드 jquery를 통해 편집 (예 : via $.getScript)은 전역 컨텍스트에서 실행되지만 moveToLocation은 전역 컨텍스트에 정의되어 있지 않습니다.

전역 액세스 할 수있는 기능을해야합니다 :

window.moveToLocation= ......

+0

그래서 간단한 ... 감사합니다 - 당신을 – Richbits