Javascript 在具有纬度和经度的最小值和最大值的表中查找并返回网格值

标签 javascript minmax

我有一个从 json 获取的纬度/经度对。要求是我需要返回与该纬度/经度对对应的网格值。 我有这个表,其中包含相应值的纬度和经度的最小值和最大值。它看起来像这样:

min_max_grid_table

我是 JavaScript 新手。在检查传入的纬度和经度是否落在每个网格值的范围内后,如何编写函数/代码来获取值?感谢您的帮助。

最佳答案

我不确定我是否正确解释了您的问题,但请尝试一下。

const [latitude, longitude] = [117.5783, -33.6768];

function getData() {
    const tbody = document.querySelector("tbody");
    const rows = [...tbody.rows];
    const data = rows.map(row => {
        const [minLng, minLat, maxLng, maxLat, gridName] = [...row.cells].map(
            cell => cell.textContent
        );

        return {
            minLng: +minLng,
            minLat: +minLat,
            maxLng: +maxLng,
            maxLat: +maxLng,
            gridName
        };
    });

    return data;
}

function getGridValue({ latitude, longitude }) {
    const data = getData();

    const item = data.find(
        item =>
            (item.minLat >= latitude || item.maxLat <= latitude) ||
            (item.minLng >= longitude || item.maxLng <= longitude)
    );

    if (item) {
        return item.gridName;
    }

    return null;
}
const value = getGridValue({ latitude, longitude });

console.log(value);
<table>
    <thead>
        <tr>
            <th>MIN_LNG</th>
            <th>MIN_LAT</th>
            <th>MAX_LNG</th>
            <th>MAX_LAT</th>
            <th>GRIDname</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>117.5783</td>
            <td>-33.6764</td>
            <td>117.5787</td>
            <td>-33.6766</td>
            <td>5c</td>
        </tr>
        <tr>
            <td>117.5783</td>
            <td>-33.6766</td>
            <td>117.5785</td>
            <td>-33.6768</td>
            <td>4c</td>
        </tr>
        <tr>
            <td>117.5783</td>
            <td>-33.6768</td>
            <td>117.5785</td>
            <td>-33.6770</td>
            <td>3c</td>
        </tr>
    </tbody>
</table>

首先我模拟从 json 获取的一对数据 const [latitude, longitude] = [117.5783, -33.6768];

getData函数从html表中获取数据,所以我不知道数据的来源。我这样做是因为使用数组和对象比使用 DOM 节点更容易

函数getGridValue搜索数据,如果满足条件,它将返回gridName属性的值,否则将返回null

再次,我希望我正确地解释了您的问题,希望您觉得它有用

关于Javascript 在具有纬度和经度的最小值和最大值的表中查找并返回网格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58945886/

相关文章:

无需外部库的 JavaScript 自动完成

javascript - 如何找到以下数字的总组合?

javascript - 为什么 ajax post 不起作用?

javascript - xhr 未定义 | Mithril js

mysql - 从多个项目中选择最小/最大

c++ - 从 std::vector<cv::Point>::const_iterator 检索值

javascript - 在新布局/css 中集成 Mapbox 时出现的问题

c++ - std::minmax initializer_list<T> 参数

html - 试图用流体尺寸填充垂直固定 div 旁边的剩余空间

css - 使用带有自动调整和最小最大的重复(): is there a max-width for 1fr?