#javascript #meteor #leaflet
#javascript #meteor #листовка
Вопрос:
Я попытался выполнить инструкции здесь, и я не вижу карту при запуске meteor.
Вот все шаги, которые я предпринимаю:
meteor create map-project
cd map-project
meteor add bevanhunt:leaflet
затем я изменяю содержимое client/main.html чтобы:
<head>
<title>map-project</title>
</head>
<body>
<div id="map"></div>
<h1>Welcome to Meteor!</h1>
{{> hello}}
{{> info}}
</body>
<template name="hello">
<button>Click Me</button>
<p>You've pressed the button {{counter}} times.</p>
</template>
<template name="info">
<h2>Learn Meteor!</h2>
<ul>
<li><a href="https://www.meteor.com/try" target="_blank">Do the Tutorial</a></li>
<li><a href="http://guide.meteor.com" target="_blank">Follow the Guide</a></li>
<li><a href="https://docs.meteor.com" target="_blank">Read the Docs</a></li>
<li><a href="https://forums.meteor.com" target="_blank">Discussions</a></li>
</ul>
</template>
и содержимое client / main.css для:
#map {
min-height: 350px;
min-width: 100%;
}
и, наконец, содержимое client/main.js чтобы:
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import './main.html';
Template.hello.onCreated(function helloOnCreated() {
// counter starts at 0
this.counter = new ReactiveVar(0);
});
Template.hello.helpers({
counter() {
return Template.instance().counter.get();
},
});
Template.hello.events({
'click button'(event, instance) {
// increment the counter when button is clicked
instance.counter.set(instance.counter.get() 1);
},
});
if (Meteor.isClient) {
L.Icon.Default.imagePath = 'packages/bevanhunt_leaflet/images/';
var map = L.map('map');
}
if (Meteor.isClient) {
L.tileLayer.provider('Thunderforest.Outdoors').addTo(map);
}
Затем я делаю:
meteor npm install
meteor
Затем перейдите к размещенному URL-адресу, и там не будет видно карты.
Кто-нибудь сделал это успешно, кто может помочь? Спасибо.
Ответ №1:
Проблема в том, что вы не объявили свою переменную Leaflet map, как показано ниже (из документации meteor-leaflet):
if (Meteor.isClient) {
L.Icon.Default.imagePath = 'packages/bevanhunt_leaflet/images/';
var map = L.map('map');
}
Перед добавлением слоев, что вы пытались сделать в следующей строке кода, у вас должен быть объект карты Leaflet (это не просто ваш map div!).:
if (Meteor.isClient) {
L.tileLayer.provider('Thunderforest.Outdoors').addTo(map);
}
Я предлагаю вам прочитать это руководство для простой реализации meteor-leaflet.
Надеюсь, это поможет!
Комментарии:
1. Я добавил
if (Meteor.isClient) { L.Icon.Default.imagePath = 'packages/bevanhunt_leaflet/images/'; var map = L.map('map'); }
к своему выше main.js скрипт и карта по-прежнему не отображаются