2016-11-16 7 views
-1

Я пытаюсь справиться с шаблоном объектного литерала, создав простой веб-сайт. Часть этого веб-сайта - это страница контактов, в которую входит карта, которую я пытаюсь инициализировать с использованием шаблона. Простые вещи, или так я думал. Таким образом, функция mapControl.init() является той, которая бросает ошибку, и я просто не могу понять, почему. Если я использую функцию initMap(), она работает.google не определяется при попытке инициализировать карты Google через шаблон литерала объекта

var mapControl = { 
    lat: 52.626562, 
    long: -8.664159, 
    $map: $('#map'), 
    zoom: 8, 
    defaultUiOff: true, 
    init: function() { 
     var map; 
     map = new google.maps.Map(mapControl.$map, { 
      center: { lat: mapControl.lat, lng: mapControl.long }, 
      zoom: mapControl.zoom, 
      disableDefaultUI: mapControl.defaultUiOff 
     }); 
    } 
} 

mapControl.init(); 

function initMap() { 
    var map; 
    map = new google.maps.Map(document.getElementById('map'), { 
     center: { lat: 52.626562, lng: -8.664159 }, 
     zoom: 15, 
     disableDefaultUI: true 
    }); 
} 

Любая помощь будет высоко ценится

+1

* "метание ошибка" * Какую ошибку это будет? Почему вы используете '$ ('# map')' в одном случае и 'document.getElementById ('map')' в другом? Что такое '' '' '? –

+0

Ошибка - это неверная ссылочная ошибка, в частности, google не определена в этой строке: map = new google.maps.Map (mapControl. $ Map. Ну, $ - селектор jquery? – rocinante

+2

Вы проверили, библиотека изображений добавлена ​​правильно? Убедитесь, что файл javascript, который определяет 'google', включен в ваш источник HTML-кода. –

ответ

0

$('#map') возвращает массив, то Google Maps API ожидает одного HTML элемента, использование:

$map: $('#map')[0], 

proof of concept fiddle

фрагмент кода:

html, 
 
body, 
 
#map { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map"></div> 
 
<script> 
 
    var mapControl = { 
 
    lat: 52.626562, 
 
    long: -8.664159, 
 
    $map: $('#map')[0], 
 
    zoom: 8, 
 
    defaultUiOff: true, 
 
    init: function() { 
 
     var map; 
 
     map = new google.maps.Map(mapControl.$map, { 
 
     center: { 
 
      lat: mapControl.lat, 
 
      lng: mapControl.long 
 
     }, 
 
     zoom: mapControl.zoom, 
 
     disableDefaultUI: mapControl.defaultUiOff 
 
     }); 
 
    } 
 
    } 
 
    mapControl.init(); 
 
</script>

+0

А, я должен был заметить это! Это сработало как шарм. – rocinante