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,克里斯托夫