2010-04-06 4 views
1

갱신 var에 추가에 내가 의견을 바탕으로레일 Google지도 통합 자바 스크립트 문제

, 내가 VAR 맵을 변경했습니다.

내가 레일 3.0.0.beta2 작업 Advanced Rails Recipes을 다음있어

문제 설명 "레시피 # 32, 마크 구글지도에 위치"내가 도로 블록에 충돌

: I는 표시되지 않습니다 구글지도. 내 @adds보기는 @ adds.to_json을 사용하여 Google지도 API를 내 모델과 연결합니다. 내 데이터베이스에는 "위도" "경도"가 부동 소수점으로 포함되어 있습니다. 그리고 전체 프로젝트는 github에서 액세스 할 수 있습니다.

내가 to_json 출력을 자바 스크립트와 올바르게 연결하지 못하는 것을 볼 수 있습니까? 내 자바 스크립트에서 다른 glairing 오류를 볼 수 있습니까? 미리 감사드립니다!

내 application.js 파일 :

function initialize() { 
     if (GBrowserIsCompatible() && typeof adds != 'undefined') { 
     var adds = new GMap2(document.getElementById("map")); 
     map.setCenter(new GLatLng(37.4419, -122.1419), 13); 
     map.addControl(new GLargeMapControl()); 

     function createMarker(latlng, add) { 
      var marker = new GMarker(latlng); 
      var html="<strong>"+add.first_name+"</strong><br />"+add.address; 
      GEvent.addListener(marker,"click", function() { 
      map.openInfoWindowHtml(latlng, html); 
      }); 
      return marker; 
     } 

     var bounds = new GLatLngBounds; 
     for (var i = 0; i < adds.length; i++) { 
      var latlng=new GLatLng(adds[i].latitude,adds[i].longitude) 
      bounds.extend(latlng); 
      map.addOverlay(createMarker(latlng, adds[i])); 
     } 
     map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds)); 
     } 
    } 
    window.onload=initialize; 
    window.onunload=GUnload; 

레이아웃/adds.html.erb :

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=ABQIAAAAeH4ThRuftWNHlwYdvcK1QBTJQa0g3IQ9GZqIMmInSLzwtGDKaBQvZChl_y5OHf0juslJRNx7TbxK3Q" type="text/javascript"></script> 

<% if @adds -%> 
<script type="text/javascript"> 
    var adds = <%= raw @adds.to_json %>; 
</script> 
<% end -%> 

레일 콘솔 출력

a = Add.all 
=> [#<Add id: 1, first_name: "Jason", last_name: "Wade", address: "225 Anzavista Ave, San Francisco, CA", address2: "", zip: "94115", city: "San Francisco", phone: "415-280-6678", float: nil, campaign_id: 1, email: "[email protected]", employer: "Google", occupation: "", created_at: "2010-04-06 14:00:36", updated_at: "2010-04-06 14:00:36", latitude: 37.779623, longitude: -122.445662>] 

ruby-1.9.1-p378 > a.to_json 
    => "[{\"address\":\"225 Anzavista Ave, San Francisco, CA\",\"address2\":\"\",\"campaign_id\":1,\"city\":\"San Francisco\",\"created_at\":\"2010-04-06T14:00:36Z\",\"email\":\"[email protected]\",\"employer\":\"Google\",\"first_name\":\"Jason\",\"float\":null,\"id\":1,\"last_name\":\"Wade\",\"latitude\":37.779623,\"longitude\":-122.445662,\"occupation\":\"\",\"phone\":\"415-280-6678\",\"updated_at\":\"2010-04-06T14:00:36Z\",\"zip\":\"94115\"}]" 
+0

은 어디에서 자바 스크립트 변수가 추가 지정된다? 컨트롤러에서 레일즈 인스턴스 변수 @adds를 설정한다고 가정하지만 js 변수 맵에만 할당합니다. if (GBrowserIsCompatible() && typeof ** add **! = 'undefined') { – mark

+0

예,'var maps'의 이름을'var adds'로 변경하십시오. –

+0

수정 사항을 확인한 후 질문을 편집하여 변경 사항을 표시 할 수 있습니까? 문제가 무엇인지는 분명하지 않습니다. 유형 추가가 정의되지 않았고 초기화가 수행되고 있는지 확인할 수 있습니까? – mark

답변

2
var bounds = new GLatLngBounds; 

이 있어야한다

var bounds = new GLatLngBounds(); 

는 그리고 당신은 처음에 정확했다 :

var map = new GMap2(document.getElementById("map"));