2016-11-09 18 views
1

座標の配列を使って最大/最小座標を取得する方法は誰でも助けてくれますか?私が得ようとしているのは、それらの座標の配列から得ることができる最長の距離です。 Ex。座標の配列で最大/最小境界を取得する方法

 
    var coordinates = [{ 
     lat: -231, 
     lng: 223l 
    }, { 
     lat: 43, 
     lng: -4323 
    }, { 
     lat: 42312, 
     lng: -231 
    }, { 
     lat: 435345, 
     lng: -6563 
    }] 

    // some filter calculation here... 


    // This is what I need 
    var min_coords = { lat, lng } 
    var max_coords = { lat, lng } 

答えて

2

あなたは値の配列を作成し、最高値と最低値、配列をフィルタリングするArray.prototype.reduceを使用して

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);

+0

うわー、素晴らしい。私はこれが動作すると思います... – olanchuy

1

解を得るためにMath.maxMath.minを使用することができます最小値と最大値 - 以下のデモ:

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

+0

@olanchuy私もこの1つのあなたの考えをお知らせください!ありがとう! – kukkuz

関連する問題