2012-05-06 2 views
1

현재 내 레일 프로젝트에 backbone.js와 gmaps4rails를 함께 가져 오려고하는데지도 초기화에 문제가 있습니다.backbone.js 및 gmaps4rails가 초기화됩니다.

내 라우터가 작동하고 백본 측면에서보기에 도달했음을 알리는 로그 메시지가 있습니다. 이제 필자는 뷰 백본 파일에 GMaps4RailsGoogle 래퍼를 초기화하려고합니다. 내 레일에서

, 나는 다음과 같이 gmaps4rails의 div의를 genereating있어 전망 :

console.log "Loading map..." 
    Gmaps.map = new Gmaps4RailsGoogle() 
    Gmaps.load_map = -> 
    Gmaps.map.map_options.auto_adjust = true 
    Gmaps.map.initialize() 
    Gmaps.map.markers markers 
    Gmaps.map.markers_conf.do_clustering = true 
    Gmaps.map.create_markers() 
    Gmaps.map.adjustMapToBounds() 
    Gmaps.map.callback() 

    Gmaps.loadMaps() 

:

<%= content_tag "div", class: "map_container" do %> 
    <%= content_tag "div", id: "map" do %> 
    <% end %> 
<% end %> 

내가보기에지도를로드 할 수 없습니다, 여기에 코드입니다 loadMaps() 호출이 onload 여야한다는 것을 알고 있지만, 이미 그렇게 된 것 같습니다. 어디에서 그 장소에 배치해야합니까?

나는 로그를 볼 수 있지만 콘솔에는 나에게 다음과 같은 오류 알려줍니다

google is not defined 
http://localhost:3000/assets/gmaps4rails/gmaps4rails.googlemaps.js?body=1 
Line 74 

그것이 gmaps4rails에 포함 된 모든 필요한 스크립트를 genereate 다음 backbone.js 내에서 제공되는 변수에 액세스 할 수 있나요를?

이러한 정보가 충분하지 않을 경우 어떤 정보가 필요한지 알려주십시오.

감사합니다, Kjellski

+0

내가 지금 바로'<% = gmaps ({ "map_options"=> { "줌"=> 15, "auto_adjust"=> 거짓, "detect_location"를 사용했습니다 => 사실, "center_on_user" => true}}, false, true) %>'내 index.html.erb에서 올바른 div를 생성하고 googlescript를로드하십시오. 그리고이 마커를 설정하기 위해 coffeescript를 리팩터링했습니다. 'Gmaps.map.addMarkers @ collection.model Gmaps.map.showMarkers()' 그럼에도 불구하고, 왜 들여 쓰기 교정 후 js로 컴파일되지 않습니까? – Kjellski

+0

설명에 따르면, Google의 js api가로드되지 않은 것으로 보입니다. 귀하의 페이지에 포함되어 있습니까? BTW, gmaps4rails와 js 라이브러리 사이에는 호환성이 없습니다. – apneadiving

+0

Sidenote, 오직 하나의 맵이 있다면'Gmaps.loadMaps()'는'Gmaps.load_map()'과 동일하며 페이지를로드 할 때 강제로 실행하는 것은 아닙니다. – apneadiving

답변

1

나는 질문에 대한 답을 발견하거나, 적어도 부분했습니다. 지금은 레일에서 내 index.html.erb보기에 gmaps에 다음 호출을 사용하고 있습니다 :

<%= gmaps({ "map_options" => { "zoom" => 15, 
           "auto_adjust" => true, 
           "detect_location" => true, 
           "center_on_user" => true }}, false, true) %> 

이것은 실제로 지금 백본에서 사용하고 필요한 Gmaps 객체를 생성합니다. 내 백본보기 템플릿이 이제는 비어있는 Empty입니다. 이 작업을 올바르게 수행하려면 내 백본보기에서 googlemaps를 설정해야합니다. 지금까지는 좋은 대답을 찾지 못했지만 이런 식으로 일하고 있습니다. 내보기에,이 같은 마커를 추가 내 함수를 호출 수집 리셋에서 수신 할 수있는 초기화를 설정하고 말 했어요 : 누군가가 동일한 작업을 수행하려고하면

initialize: -> 
    @collection.on('reset', @loadMarkersOnMap, this) 

render: -> 
    ... 

loadMarkersOnMap: -> 
    Gmaps.map.addMarkers @collection.toJSON() 
    Gmaps.map.showMarkers() 

희망이 도움이됩니다. 또한 Gmaps4RailsX를 초기화 할 호출을 내 백본 파일에 올바로 이동시키는 솔루션을 추가하고 싶습니다. 어떤 제안?

+0

아무도 다른 제안을 생각해 내지 못했기 때문에 나는 내 대답을 받아 들였습니다. 하지만 나는 다른 누군가의 대답을 받아들이고 싶다 ... – Kjellski