0

我有一個文件my_app.js.coffee並有此設置的谷歌地圖:Rails - 如何在視圖中訪問Google地圖的實例?

map = undefined 
initialize = (map) -> 
    myOptions = 
     center: new google.maps.LatLng 39.729001, -94.902342 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    map = new google.maps.Map $('.map')[0], myOptions 

    $ -> 
    initialize(map) 

    return 

然後,如果我在一個視圖中DIV使用與class="map",顯示在地圖。這很酷。

但有時需要設置地圖的差異中心。 在各自的看法,我想這:

<script type="text/javascript"> 
    map.setCenter(43.652976, -79.390409); 
</script> 

不過,這並不影響地圖的中心。即使在控制檯中出現以下錯誤消息:

Uncaught ReferenceError: map is not defined 

我在這裏錯過了什麼?

預先感謝您。

編輯:

buildMap = (callback = ->)-> 
    console.log('xxx') 
    myOptions = 
     center: new google.maps.LatLng 39.729001, -94.902342 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    console.log('b1') 
    Gmaps.map = new google.maps.Map $('.map')[0], myOptions 
    console.log('b2') 
    #addMarkers(Gmaps.map) 
    callback() 

console.log('ccc') 
Gmaps = 
    buildMap: buildMap 

window.Gmaps = Gmaps 

回答

1

map是你的文件中的局部變量。

醜陋的解決將與window.map

來取代它你應該想想你的變量和你依賴的範圍。它是一個巨大的話題。

在我做的第一個地方如下:

Gmaps = 
    buildMap: (callback = ->)-> 
    myOptions = 
     center: new google.maps.LatLng 39.729001, -94.902342 
     zoom: 3, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    Gmaps.map = new google.maps.Map $('.map')[0], myOptions 
    callback() 

window.Gmaps = Gmaps 

然後在視圖中創建地圖:

Gmaps.buildMap() 

創建和更改中心:

Gmaps.buildMap(function(){ 
    Gmaps.map.setCenter(43.652976, -79.390409); 
}) 
+0

遺憾的是還沒有地圖。在這行之後的'console.log'聲明中,不會出現有錯誤的行'Gmaps.map = new google.maps.Map $('。map')[0],myOptions'作爲打印出來的行之後的'console.log'語句嗎? – user984621 2014-12-03 16:27:20

+0

如果你做'$(function(){Gmaps.buildMap() })' – apneadiving 2014-12-03 16:28:29

+0

好消息是,這是工作!謝謝!但是,當我嘗試設置新的中心時,如:$(function(){Gmaps.buildMap(function(){GarageGraph.map.setCenter(43.652976,-79.390409); Gmaps.map.setZoom(5); })})' - 現在什麼都沒有發生,並且控制檯中沒有JS錯誤。 – user984621 2014-12-03 16:35:39

相關問題