javascript - 如何在提供的 lat/lng 对数组之间获取所有 lat/lng 对的数组
问题描述
在这个提供的数组之间获取所有纬度/经度对的好方法是什么?
提供的纬度和经度的示例数组:
var locs = [{
lat: -96.7260,
lng: 44.2599
},
{
lat: -96.7315,
lng: 44.3334
},
{
lat: -96.8434,
lng: 44.3321
},
{
lat: -96.8551,
lng: 44.2525
}
]
function getLowAndHighValues(locArr) {
var latLow = Number.POSITIVE_INFINITY,
latHigh = Number.NEGATIVE_INFINITY,
lngLow = Number.POSITIVE_INFINITY,
lngHigh = Number.NEGATIVE_INFINITY;
var tmpLng, tmpLat;
for (var i = locArr.length - 1; i >= 0; i--) {
tmpLng = locArr[i].lng;
tmpLat = locArr[i].lat;
if (tmpLng < lngLow) lngLow = tmpLng;
if (tmpLng > lngHigh) lngHigh = tmpLng;
if (tmpLat < latLow) latLow = tmpLat;
if (tmpLat > latHigh) latHigh = tmpLat;
}
return {
latLow,
latHigh,
lngLow,
lngHigh
}
}
var lowHighVals = getLowAndHighValues(locs); // returns {latLow: -96.8551, latHigh: -96.726, lngLow: 44.2525, lngHigh: 44.3334}
理想情况下,我会传递lowHighVals
给getPairValuesBetweenLowAndHigh
我想要增加值的方式:
function getPairValuesBetweenLowAndHigh(lowHighVals, inc) {
var { latLow, latHigh, lngLow, lngHigh } = lowHighVals;
var pairs = [];
var tempLoc = { lat: latLow, lng: lngLow }
// where I am stuck
return pairs;
}
getPairValuesBetweenLowAndHigh(lowHighVals, 0.01);
getPairValuesBetweenLowAndHigh(lowHighVals, 0.01)
将返回以下内容:
// where I'm trying to get
[
{ lat: -96.8551, lng: 44.2525 },
{ lat: -96.8451, lng: 44.2625 },
{ lat: -96.8351, lng: 44.2725 },
... up to ...
{ lat: -96.7351, lng: 44.3225 },
{ lat: -96.7260, lng: 44.3334 }
]
解决方案
var locs = [{
lat: -96.7260,
lng: 44.2599
},
{
lat: -96.7315,
lng: 44.3334
},
{
lat: -96.8434,
lng: 44.3321
},
{
lat: -96.8551,
lng: 44.2525
}
];
var smallestLat = locs[0], smallestLng = locs[0], biggestLat = locs[0], biggestLng = locs[0];
locs.forEach(function(coord){
if(coord.lat < smallestLat.lat) smallestLat = coord;
if(coord.lng < smallestLng.lng) smallestLng = coord;
if(coord.lat > biggestLat.lat) biggestLat = coord;
if(coord.lng > biggestLng.lng) biggestLng = coord;
});
console.log("smallestLat",smallestLat)
console.log("smallestLng",smallestLng)
console.log("biggestLat",biggestLat)
console.log("biggestLng",biggestLng)
result = {
highest : {
lat: biggestLat.lat > biggestLng.lat?biggestLat.lat:biggestLng.lat,
lng: biggestLat.lng > biggestLng.lng?biggestLat.lng:biggestLng.lng,
},
lowest: {
lat: smallestLat.lat > smallestLng.lat?smallestLat.lat:smallestLng.lat,
lng: smallestLat.lng > smallestLng.lng?smallestLat.lng:smallestLng.lng,
}
}
console.log("result", result);
推荐阅读
- excel - 如何在另一个工作簿中查找最后一列
- r - 在这种情况下如何解释'fill = 1'?
- c# - 在 WebAPI POST 中删除模型属性,但在 Swagger 中保留 GET
- javascript - 没有异步/等待的承诺。有人可以告诉我另一种方法来解决这个问题吗?
- python - 如何更新概率矩阵
- python - 如何找出python函数的时间复杂度
- jquery - 我可以在同一个项目中同时编写 alpine.js 和 jquery,它会导致任何文档行为吗?
- c - C 中允许特定舍入规则的 Round() 函数替代方案?
- image-processing - 将两个训练数据集应用于 model.fit 或将两个图像生成器函数的结果组合到我们的 CNN 模型中
- shell - shell 脚本中的 % 是什么?