如何获得坐标数组的最大/最小边界

How to get maximum/minimum boundaries with array of coordinates

本文关键字:边界 何获得 坐标 数组      更新时间:2023-09-26

谁能帮助我的逻辑上我应该如何得到最大/最小坐标,与坐标数组?我想要得到的是它从这些坐标数组中所能得到的最长距离。交货。

<>之前Var坐标= [{纬度:-231,液化天然气:223升}, {纬度:43岁液化天然气:-4323}, {纬度:42312,液化天然气:-231}, {纬度:435345,液化天然气:-6563})//这里有一些过滤器计算…//这就是我需要的Var min_coord = {lat, LNG}Var max_cods = {lat, LNG}

您可以创建值的数组,然后使用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);

使用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;}