在OpenLayers 5中,当使用const extent = this.view.calculateExtent(this.map.getSize())
获取视图范围,然后使用latLng
将其转换为toLonLat()
时,如果地图将结果值固定(经度从-180到180)处于非常低的缩放级别。
是否有任何避免这种夹持的方法,例如使用另一个投影或另一个功能?
答案 0 :(得分:0)
我会回答自己。查看代码public static void run()
{
var inputs =
new List<Input>{
new Input{
Value = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 },`
TargetCount = 5, ExpectedOutput= new List<int>{1,3,5,7,9}
},
new Input{
Value = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9 },
TargetCount = 3, ExpectedOutput= new List<int>{1,4,7}
},
};
foreach (var testInput in inputs)
{
Console.WriteLine($"# Input = [{string.Join(", ", testInput.Value)}]");
var result = Reduce(testInput.Value, testInput.TargetCount);
Console.WriteLine($"# Computed Result = [{string.Join(", ", result)} ]\n");
}
}
static List<int> Reduce(List<int> input, int targetItemsCount)
{
while (input.Count() > targetItemsCount)
{
var nIndex = input.Count() / targetItemsCount;
input = input.Where((x, i) => i % nIndex == 0).ToList();
}
return input;
}
class Input
{
public List<int> ExpectedOutput;
public List<int> Value;
public int TargetCount;
}
将应用等效于toLonLat()
的变换,然后钳制经度。因此,答案是使用transform(coordinate, 'EPSG:3857', 'EPSG:4326')
而不是transform()
。此外,还有一个toLonLat()
函数。