调用toLonLat()时,是否有任何投影不会限制值?

时间:2019-02-05 18:18:20

标签: openlayers map-projections openlayers-5

在OpenLayers 5中,当使用const extent = this.view.calculateExtent(this.map.getSize())获取视图范围,然后使用latLng将其转换为toLonLat()时,如果地图将结果值固定(经度从-180到180)处于非常低的缩放级别。

是否有任何避免这种夹持的方法,例如使用另一个投影或另一个功能?

1 个答案:

答案 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()函数。