菜鸟教程小白 发表于 2022-12-13 08:47:40

ios - 在 iOS 上计算给定中心纬度/经度和距离的边界框?


                                            <p><p>在我的 iOS 应用程序中,我有一个纬度和经度,可以告诉我我的位置。我希望能够计算出满足距我所在位置一定距离 d 的边界框。我该怎么做?</p>

<p><strong>尝试 1:</strong>
所以我尝试了@Neeku 给出的解决方案。我可以看到它应该如何返回正确的信息,但不幸的是它已关闭。所以我认为我不能使用它。</p>

<p>我写的代码是这样的,我传入<strong>1000</strong>米:</p>

<pre><code>MKCoordinateRegion startRegion = MKCoordinateRegionMakeWithDistance(center, meters, meters);

CLLocationCoordinate2D northWestCorner, southEastCorner;

northWestCorner.latitude = startRegion.center.latitude + .5 * startRegion.span.latitudeDelta;
northWestCorner.longitude = startRegion.center.longitude - .5 * startRegion.span.longitudeDelta;
southEastCorner.latitude = startRegion.center.latitude - .5 * startRegion.span.latitudeDelta;
southEastCorner.longitude = startRegion.center.longitude - .5 * startRegion.span.longitudeDelta;

NSLog(@&#34;CENTER &lt;%@,%@&gt;&#34;, @(center.latitude),@(center.longitude));
NSLog(@&#34;NW &lt;%@,%@&gt;, SE &lt;%@,%@&gt;&#34;,@(northWestCorner.latitude),@(northWestCorner.longitude),@(southEastCorner.latitude),@(southEastCorner.longitude));
</code></pre>

<p>那么结果就是:
<strong>中心 <38.0826682,46.3028721>
西北 <38.08717278501047,46.29717303828632>,东南 <38.07816361498953,46.29717303828632></strong></p>

<p>然后我把它放在谷歌地图中并得到这个:(见截图)</p>

<p> <img src="/image/ykof7.png" alt="enter image description here"/> </p>

<p>那么根据我的理解,1000 米应该从盒子的中心到两侧。 map 上测量的拐角应该<strong>OVER</strong> 1000 米,而实际上只有 800 多米。这就是我要解决的问题。</p>

<p>我以前尝试过这种方法,但距离根本不准确。所以,这个解决方案对我没有用。如果您有更多建议或者可能想指出这里做错了什么,请告诉我。</p>

<p>谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>假设您想要的距离是 111 米。然后你使用下面的代码:</p>

<pre><code>    // 111 kilometers / 1000 = 111 meters.
    // 1 degree of latitude = ~111 kilometers.
    // 1 / 1000 means an offset of coordinate by 111 meters.

    float offset = 1.0 / 1000.0;
    float latMax = location.latitude + offset;
    float latMin = location.latitude - offset;

    // With longitude, things are a bit more complex.
    // 1 degree of longitude = 111km only at equator (gradually shrinks to zero at the poles)
    // So need to take into account latitude too, using cos(lat).

    float lngOffset = offset * cos(location.latitude * M_PI / 180.0);
    float lngMax = location.longitude + lngOffset;
    float lngMin = location.longitude - lngOffset;
</code></pre>

<p><code>latMax</code>、<code>latMin</code>、<code>lngMax</code>、<code>lngMin</code> 将为您提供边界框坐标。</p>

<p>(如果您需要的距离不是 111 米,您可以很容易地更改此代码。只需相应地更新 <code>offset</code> 变量)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 iOS 上计算给定中心纬度/经度和距离的边界框?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/25063151/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/25063151/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 iOS 上计算给定中心纬度/经度和距离的边界框?