【问题标题】:How to get maximum/minimum boundaries with array of coordinates如何使用坐标数组获得最大/最小边界
【发布时间】:2017-03-23 04:58:50
【问题描述】:

任何人都可以帮助我了解我应该如何获得最大/最小坐标以及一组坐标的逻辑吗?我想要得到的是它可以从这些坐标数组中得到的最长距离。例如。

变量坐标 = [{ 纬度:-231, 液化天然气:223升 }, { 纬度:43, 液化天然气:-4323 }, { 纬度:42312, 液化天然气:-231 }, { 纬度:435345, 液化天然气:-6563 }] // 这里有一些过滤器计算... // 这就是我需要的 var min_coords = { 纬度, lng } var max_coords = { 纬度, lng }

【问题讨论】:

    标签: javascript arrays coordinates


    【解决方案1】:

    您可以创建值的数组,然后使用Math.maxMath.min 获取最高和最低值

    var coordinates = [{
        lat: -231,
        lng: 223
    }, {
        lat: 43,
        lng: -4323
    }, {
        lat: 42312,
        lng: -231
    }, {
        lat: 435345,
        lng: -6563
    }]
    
    var lat = coordinates.map(function(p) {return p.lat});
    var lng = coordinates.map(function(p) {return p.lng});
    
    var min_coords = {
        lat : Math.min.apply(null, lat),
        lng : Math.min.apply(null, lng)
    }
    var max_coords = {
        lat : Math.max.apply(null, lat),
        lng : Math.max.apply(null, lng)
    }
    
    console.log(min_coords);
    console.log(max_coords);

    【讨论】:

      【解决方案2】:

      使用Array.prototype.reduce 过滤数组以获取最小值和最大值的解决方案 - 演示如下:

      var coordinates=[{lat:-231,lng:223},{lat:43,lng:-4323},{lat:42312,lng:-231},{lat:435345,lng:-6563}];
      
      var result = coordinates.reduce(function(prev,curr){
         if(curr.lat < prev.min_cords.lat)
           prev.min_cords.lat = curr.lat;
        if(curr.lat > prev.max_cords.lat)
           prev.max_cords.lat = curr.lat;
        if(curr.lng < prev.min_cords.lng)
           prev.min_cords.lng = curr.lng;
        if(curr.lng > prev.max_cords.lng)
           prev.max_cords.lng = curr.lng;
        return prev;
      },{min_cords:{lat:Infinity,lng:Infinity},max_cords:{lat:-Infinity,lng:-Infinity}});
      
      console.log(result);
      .as-console-wrapper{top:0;max-height:100%!important;}

      【讨论】:

      • @olanchuy 也让我知道您对此的看法,谢谢!
      猜你喜欢
      • 2020-09-15
      • 2020-02-21
      • 2019-11-02
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2016-01-05
      • 2013-10-22
      相关资源
      最近更新 更多