0

У меня есть файл my_app.js.coffee и есть эта настройка Google Maps:Rails - как сделать экземпляр Google Maps доступным во взглядах?

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 

Что я могу здесь пропустить?

Заранее спасибо.

EDIT:

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

К сожалению, до сих пор нет карты. Не будет ли что-то неправильное в строке 'Gmaps.map = new google.maps.Map $ ('. Map') [0], myOptions' как оператор' console.log' после этой строки, который выдает что-нибудь? – user984621

+0

Что делать, если вы делаете '$ (function() {Gmaps.buildMap() })' – apneadiving

+0

Отличная новость - это то, что работает! Благодаря! Но когда я пытаюсь установить новый центр, например: '$ (function() {Gmaps.buildMap (function() { Gmaps.map.setCenter (43.652976, -79.390409); Gmaps.map.setZoom (5); })}) '- ничего не происходит прямо сейчас, и никакой ошибки JS в консоли. – user984621

Смежные вопросы