Использование Google Maps API с Meteor.js

Я пытаюсь использовать Google Maps API с Meteor 1.3 и пакетом dburles:google-maps.

Я пробовал разные способы его загрузки, но дело в том, что я не могу его использовать, потому что я думаю, что загрузка занимает слишком много времени, и моя страница отображается раньше.

Я загружаю это таким образом в моем main.js чтобы быть уверенным, что загружается первым.

import { GoogleMaps } from 'meteor/dburles:google-maps';
import { Meteor } from 'meteor/meteor';

Meteor.startup(function () {
  GoogleMaps.load({ key: 'myKey' });
});

Затем я включаю помощника в свой шаблон для отображения карты.

<template name="home">
    <h1>Home</h1>

    <div class="map-container">
        {{> googleMap name="exampleMap" options=exampleMapOptions}}
    </div>

</template>

Наконец, есть мой помощник для настройки параметров шаблона.

import { Template } from 'meteor/templating';
import { GoogleMaps } from 'meteor/dburles:google-maps';

import './home_page.html';

Template.home.helpers({
  exampleMapOptions() {
    // Make sure the maps API has loaded
    if (GoogleMaps.loaded()) {
      // Map initialization options
      return {
        center: new google.maps.LatLng(-37.8136, 144.9631),
        zoom: 8,
      };
    }
  },
});

Template.home.onCreated(function() {
  GoogleMaps.ready('exampleMap', function(map) {
    console.log("I'm ready!");
  });
});

Я думаю, что условие if (GoogleMaps.loaded()) причина, по которой ничего не отображается, но если я не укажу это, я получил ошибку, потому что google объект не существует

1 ответ

Решение

Если у вас нет ошибки на консоли JS, карта может быть загружена, но не показана для отсутствующего css.

Если это так, добавьте строку ниже к вашему main.css

body, html {
    height: 100%;
    width: 100%;
}

.map-container {
    width: 100%;
    height: 100%;
}
Другие вопросы по тегам