【发布时间】:2015-07-18 02:19:45
【问题描述】:
我喜欢绘制几个不同的小片段(gpx 文件),每个片段都在单独的传单地图上
我试图用这段代码来解决这个问题,传单需要一个新的地图层
我使用“layers”-array 来存储所有地图引用...
<script>
var layers = [];
var i = 0;
var ref;
</script>
@for(segment <- segments) {
<div id="@segment.id" style="height:300px"></div>
<script>
layers[i] = L.map("@segment.id");
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
}).addTo(layers[i]);
var url = '/assets/gpx_files/@segment.gpxPath';
new L.GPX(url, {
async: true,
marker_options: {
startIconUrl: '/assets/images/pinIcon.png',
endIconUrl: '/assets/images/pinIcon.png',
shadowUrl: '/assets/images/pinIconShadow.png'
}
}).on('loaded', function(e) {
layers[i].fitBounds(e.target.getBounds());
}).addTo(layers[i]);
i = i+1;
</script>
(我有一个“层”数组,它为每个段存储一个新层,因为传单无法处理它)
但传单不喜欢
layer[i].fitBounds
-> TypeError: layers[i] is undefined
有谁给我一个好主意吗?
【问题讨论】:
-
你能在抛出错误的行之前放入
console.log(layers),这样我们就可以看到这里发生了什么?或者更好的是,你能把它放在在线演示中吗?是否正在创建地图容器?@segment.id 是否被正确插值? -
我建立了一个小例子,但我没有找到链接 gpx 文件的方法。 jsbin.com/xovuseqata/2/edit?html,css,output 如果你替换行“var ref = layers[i];”使用“layers[i]”会出现问题,目前只有最后一张地图显示了轨迹。我测试了@segment.id,它肯定工作正常。
-
作为旁注,您不应该在同一页面上包含 Leaflet 0.5 和 Mapbox 2.1.9。删除
http://cdn.leafletjs.com/leaflet-0.5/leaflet.js引用。