Leaflet 使用多段线对象数组作为图层

Leaflet 使用多段线对象数组作为图层,leaflet,Leaflet,我有一个问题,为什么我尝试将多段线添加为图层的方法不起作用。说清楚一点,我并不是说它应该有效,只是我很好奇为什么它在一种情况下有效,而在另一种情况下无效。考虑下面的代码: var oMbTiles = new L.tileLayer('/mbtiles/mbtiles.php?&z={z}&x={x}&y={y}', { tms: true, opacity: 0.7 }), oUpIcon = new L.Icon({ iconUrl:

我有一个问题,为什么我尝试将多段线添加为图层的方法不起作用。说清楚一点,我并不是说它应该有效,只是我很好奇为什么它在一种情况下有效,而在另一种情况下无效。考虑下面的代码:

var oMbTiles = new L.tileLayer('/mbtiles/mbtiles.php?&z={z}&x={x}&y={y}', {
    tms: true,
    opacity: 0.7
  }),
  oUpIcon = new L.Icon({
    iconUrl: '/custom/css/themes/app/markers/up.png',
    iconSize: [24, 26]
  }),
  oMapTypes = {
    'Yakabox': oMbTiles
  },
  aFirstMarkers = [],
  aFirstLines = [],
  aFirstLatLng,
  oFirstLine,
  oFirstGroup,
  oLayersControl,
  oOverlayMaps,
  oMap,
  i;

aFirstLatLng = [
  [18.319026, -66.420557],
  [18.180555, -66.749961],
  [18.361945, -67.175597],
  [18.455183, -67.119887],
  [18.158345, -66.932911],
  [18.295366, -67.125135],
  [18.402253, -66.711397],
  [18.420412, -66.671979],
  [18.445147, -66.559696],
  [17.991245, -67.153993],
  [18.083361, -67.153897],
  [18.064919, -66.716683],
  [18.412600, -66.863926],
  [18.190607, -66.832041],
  [18.076713, -66.947389],
  [18.295913, -66.515588],
  [18.263085, -66.712985],
  [18.433150, -66.285875],
  [17.963613, -66.947127],
  [18.349416, -66.578079],
  [18.448452, -66.594127],
  [17.985033, -66.886536],
  [18.053539, -66.792931],
  [18.407226, -66.808999],
  [18.134695, -67.116199],
  [18.468320, -67.015781],
  [18.210330, -66.591616],
  [18.003422, -67.035810],
  [18.277102, -66.869645],
  [18.240187, -66.988776],
  [18.422908, -66.489337],
  [18.377637, -67.079574],
  [18.332568, -67.227022],
  [18.434099, -66.927384],
  [18.182055, -67.132502],
  [18.221464, -67.156039],
  [18.107800, -67.037263],
  [18.332929, -66.959689]
];

for (i = 0; i < aFirstLatLng.length; i++) {
  aFirstMarkers.push(L.marker(aFirstLatLng[i]).setIcon(oUpIcon).bindPopup('lat/lng : ' + aFirstLatLng[i].join(', ')))

  if (i === (aFirstLatLng.length - 1)) {
    aFirstLines.push(L.polyline([aFirstLatLng[i], aFirstLatLng[0]], {color: 'red', weight: 3, opacity: 0}));
  } else {
    aFirstLines.push(L.polyline([aFirstLatLng[i], aFirstLatLng[i + 1]], {color: 'red', weight: 3, opacity: 0}));
  }
}

oFirstLine = L.polyline(aFirstLatLng, {
  weight: 5,
  color: 'red'
});
oFirstLine.on('click', function () {
  console.log('Clicked First line', arguments);
});

oFirstGroup = L.layerGroup(aFirstMarkers, {});

// This works
oFirstGroup.addLayer(oFirstLine);

// These next two lines do not work

// Here I'm trying to just add an array of polyline objects as a layer
//oFirstGroup.addLayer(aFirstLines);

// Here I'm trying to add the array of polyline objects as a layer group
//oFirstGroup.addLayer(L.layerGroup(aFirstLines));

oOverlayMaps = {
  'First Group': oFirstGroup,
};
oMap = new L.map('map', {
  minZoom: 4,
  maxZoom: 10,
  zoom: 9,
  center: aFirstLatLng[7],
  layers: [oMbTiles, oFirstGroup]
});

oLayersControl = new L.Control.Layers(oMapTypes, oOverlayMaps, {
  collapsed: false
}).addTo(oMap);
var oMbTiles=newl.tillelayer('/mbtiles/mbtiles.php?&z={z}&x={x}&y={y}){
tms:没错,
不透明度:0.7
}),
图标=新的L.图标({
iconUrl:“/custom/css/themes/app/markers/up.png”,
iconSize:[24,26]
}),
oMapTypes={
“Yakabox”:OMB文件
},
aFirstMarkers=[],
aFirstLines=[],
首先,
在第一线,
在其小组中,
oLayersControl,
oOverlayMaps,
oMap,
我
aFirstLatLng=[
[18.319026, -66.420557],
[18.180555, -66.749961],
[18.361945, -67.175597],
[18.455183, -67.119887],
[18.158345, -66.932911],
[18.295366, -67.125135],
[18.402253, -66.711397],
[18.420412, -66.671979],
[18.445147, -66.559696],
[17.991245, -67.153993],
[18.083361, -67.153897],
[18.064919, -66.716683],
[18.412600, -66.863926],
[18.190607, -66.832041],
[18.076713, -66.947389],
[18.295913, -66.515588],
[18.263085, -66.712985],
[18.433150, -66.285875],
[17.963613, -66.947127],
[18.349416, -66.578079],
[18.448452, -66.594127],
[17.985033, -66.886536],
[18.053539, -66.792931],
[18.407226, -66.808999],
[18.134695, -67.116199],
[18.468320, -67.015781],
[18.210330, -66.591616],
[18.003422, -67.035810],
[18.277102, -66.869645],
[18.240187, -66.988776],
[18.422908, -66.489337],
[18.377637, -67.079574],
[18.332568, -67.227022],
[18.434099, -66.927384],
[18.182055, -67.132502],
[18.221464, -67.156039],
[18.107800, -67.037263],
[18.332929, -66.959689]
];
对于(i=0;i
所以在这里,我只是尝试遍历一些邮政编码,为每个位置创建标记,并使用多段线连接标记。如果仅使用lat/lng数组实例化多段线对象,则将该多段线添加到“标记”图层组(oFirstGroup)时,该操作有效。但是如果我传入一个多段线对象数组(在起始/结束lat/lng坐标中传入),这将不起作用。这些线没有显示在地图上。这是因为我得到一个错误,说“提供的对象不是层”。好的,所以我尝试使用多段线对象数组显式创建图层组,当错误消失时,这些线仍然没有添加到地图中

所以我很好奇,这能起作用吗?或者,在实例化单个多段线对象以添加到图层时,正确创建多段线连接标记的唯一方法是将lat/lng坐标作为数组传递?为什么我可以传入一个标记对象数组(在实例化irstgroup时)并将该图层添加到地图中,但传入一个多段线对象数组时却不能执行相同的操作

thnx,

克里斯托夫

好吧,我不羞于承认这一点——我是个白痴。问题是
不透明度:0
。我从其他地方复制了代码(试图理解发生了什么),但我没有删除它。就在我这么做的时候,瞧

我是达姆

thnx,

克里斯托夫

好吧,我不羞于承认这一点——我是个白痴。问题是
不透明度:0
。我从其他地方复制了代码(试图理解发生了什么),但我没有删除它。就在我这么做的时候,瞧

我是达姆

thnx,
克里斯托夫