Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 为传单JS创建一个按钮;“地图上的潘托点”;在流星地图之外_Meteor_Leaflet - Fatal编程技术网

Meteor 为传单JS创建一个按钮;“地图上的潘托点”;在流星地图之外

Meteor 为传单JS创建一个按钮;“地图上的潘托点”;在流星地图之外,meteor,leaflet,Meteor,Leaflet,我已经使用传单JS在Meteor中创建了一张地图。问题是,我只能让map.panTo在Template.dynamicmap.rendered区域内工作。但是,这使得您在地图上单击的任何位置都可以平移到该位置 这是已删除id和访问令牌的完整渲染区域 Template.dynamicmap.rendered = function() { var southWest = L.latLng(35.02035919622158, -121.21049926757814); var northEa

我已经使用
传单JS
Meteor中创建了一张地图。问题是,我只能让
map.panTo
Template.dynamicmap.rendered
区域内工作。但是,这使得您在地图上单击的任何位置都可以平移到该位置

这是已删除id和访问令牌的完整渲染区域

Template.dynamicmap.rendered = function() {
  var southWest = L.latLng(35.02035919622158, -121.21049926757814);
  var northEast = L.latLng(42.4426214924114, -110.79740478515624);
  var mybounds = L.latLngBounds(southWest, northEast);
  var map = L.map('map_container',{zoomControl: false, maxBounds: [[37.00035919622158, -119.23049926757814],[40.4626214924114, -112.77740478515624]],}).setView([38.685509760012, -115.86181640625001], 10);
  var w = window.innerWidth;
  var h = window.innerHeight;
  $('#map_container').css({width: w+'px', height: h+'px'});
  L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
bounds: mybounds,
maxZoom: 10,
minZoom: 9,
}).addTo(map);
  L.Icon.Default.imagePath = 'packages/leaflet/images';
  var marker = L.marker([38.685509760012, -115.86181640625001]).addTo(map);
  map.fitBounds(bounds);
};
因此,我尝试将其放入如下所示的模板事件中,该按钮不在地图区域内,但仍在dynamicmap模板中。但它不起作用

Template.dynamicmap.events({    
 'click input.goto3':(function() {
  map.panTo(L.latLng(38.685509760012, -115.86181640625001)); 
 })
});
我收到错误消息:

“未捕获引用错误:未定义映射”

在控制台中。我一直在想办法解决这个问题,但是运气不好。我希望这里有人能给我指出正确的方向

这是我的HTML模板

<template name="dynamicmap">
<div class="containerbox">
<div class="map_container" id="map_container">
</div>
</div>
<input type="button" class="goto3" value="Go"/>
</template>

您需要将
map
设置为全局变量:

var map = null;
Template.dynamicmap.rendered = function() {
  var southWest = L.latLng(35.02035919622158, -121.21049926757814);
  var northEast = L.latLng(42.4426214924114, -110.79740478515624);
  var mybounds = L.latLngBounds(southWest, northEast);
  map = L.map('map_container',{zoomControl: false, ...
  ...

你能发布更多的代码吗。特别是模板HTML和地图定义。根据这里的信息,我的第一个猜测是您以某种方式构建了代码,使得Template.dynamicmap.events和Template.dynamicmap.rendered在Meteor捆绑它们之后以不同的闭包结束。@MultiMat我已经用模板和包含完整呈现区域的内容更新了代码。谢谢你看这个。非常感谢,就是这样。从渲染区域移除变量并将变量放置在外部是可行的。