我正在使用以下内容:
$.ajax({
type: "GET",
url: "/geojson/routes",
dataType: 'json',
async: true,
success: function(latlngs) {
var Geodesic = L.geodesic([latlngs], {
weight: 3,
opacity: 1,
color: 'navy',
steps: 200
}).addTo(mymap);
}
});
使用此数据集:
[
[
33.63669961111111, -84.427864
],
[
28.42938888888889, -81.309
],
[
44.65094444444444, -73.46813888888889
],
[
28.42938888888889, -81.309
]
]
我得到了很好的平滑测地线,但是当我使用更大的数据集时:
[
[
33.43427777777777, -112.01158333333333
],
[
41.97732013888889, -87.90800591666667
],
[
41.97732013888889, -87.90800591666667
],
[
33.942625, -118.40780277777779
],
[
39.861666666666665, -104.67316666666667
],
[
39.861666666666665, -104.67316666666667
],
[
33.942625, -118.40780277777779
],
[
44.881972222222224, -93.22177777777777
],
[
44.881972222222224, -93.22177777777777
],
[
41.97732013888889, -87.90800591666667
],
[
41.97732013888889, -87.90800591666667
],
[
39.861666666666665, -104.67316666666667
],
[
33.942625, -118.40780277777779
],
[
33.63669961111111, -84.427864
],
[
33.63669961111111, -84.427864
],
[
28.42938888888889, -81.309
],
[
44.65094444444444, -73.46813888888889
],
[
28.42938888888889, -81.309
],
[
28.42938888888889, -81.309
],
[
41.97732013888889, -87.90800591666667
],
[
41.97732013888889, -87.90800591666667
],
[
26.071666666666665, -80.14969444444445
],
[
26.071666666666665, -80.14969444444445
],
[
29.984444444444446, -95.34144444444443
],
[
32.733555555555554, -117.18966666666667
],
[
32.733555555555554, -117.18966666666667
],
[
41.97732013888889, -87.90800591666667
],
[
41.97732013888889, -87.90800591666667
],
[
27.97547222222222, -82.53325
],
[
41.97732013888889, -87.90800591666667
],
[
44.881972222222224, -93.22177777777777
],
[
44.881972222222224, -93.22177777777777
],
[
33.43427777777777, -112.01158333333333
],
[
39.861666666666665, -104.67316666666667
],
[
39.861666666666665, -104.67316666666667
],
[
41.97732013888889, -87.90800591666667
]
]
什么都没有出现。我进行了双重检查,两组在语法上看似相同。可以以这种方式加载的数据量是否有限制?
答案 0 :(得分:1)
您的第二个("较大的")数据集有多个连续相同(重复)的坐标。
看起来Leaflet.Geodesic插件不喜欢这样,因为它无法计算2个相同位置之间的任何方位。
只需过滤掉那些重复项,然后一切正常。
理想情况下,您可以重构数据集以消除这些位置,或者您也可以在运行时执行此操作:
function filterSuccessiveDuplicatePositions(latlngs) {
var result = [];
if (latlngs.length > 0) {
result.push(latlngs[0]);
}
for (var i = 1; i < latlngs.length; i += 1) {
if (!L.latLng(latlngs[i]).equals(latlngs[i - 1])) {
result.push(latlngs[i]);
}
}
return result;
}
$.ajax({
type: "GET",
url: "routes2",
dataType: 'json',
async: true,
success: function(latlngs) {
console.log(latlngs);
var filtered = filterSuccessiveDuplicatePositions(latlngs);
var Geodesic = L.geodesic([filtered], {
weight: 3,
opacity: 1,
color: 'navy',
steps: 200
}).addTo(mymap);
}
});
上跟踪此错误