菜鸟教程小白 发表于 2022-12-13 08:06:34

ios - 检查 map 上的点是否在覆盖范围内


                                            <p><p>我正在努力找出 MKPolygon 是否与 MKCircle 相交。 </p>

<p>这是我的情况:我有一张充满区域的 map 。现在用户可以在 map 上设置一个大头针,我从那里绘制一个以大头针位置为中心的 MKCircle。现在我想知道这个圆圈是否与 map 上已经存在的某个区域重叠。</p>

<p>我的想法是使用 CGPathContainsPoint 方法检查多边形的每个点是否位于圆内。 </p>

<p>这是我的代码:</p>

<pre><code>//the circle for the location filter
    MKCircleView *circleView = (MKCircleView *);


//loop all regions
for (MKPolygon *region in regions){

    BOOL mapCoordinateIsInPolygon = FALSE;

    //loop all point of this region
    for (int i = 0; i &lt; region.pointCount; i++) {
       MKMapPoint point = region.points;
       CGPoint circleViewPoint = ;
       mapCoordinateIsInPolygon = CGPathContainsPoint(circleView.path, NULL, circleViewPoint, NO);
    }

    if (mapCoordinateIsInPolygon) {
      NSLog(@&#34;YES! At least one point of the poly lies within the circle&#34;);
    }

}
</code></pre>

<p>不幸的是,我得到了无法预测的结果 - 这没有任何意义。知道我做错了什么吗?有没有其他方法可以做我想做的事?</p>

<p>我的代码部分来自 <a href="https://stackoverflow.com/questions/4354130/how-to-determine-if-an-annotation-is-inside-of-mkpolygonview-ios/4354250#4354250" rel="noreferrer noopener nofollow">How to determine if an annotation is inside of MKPolygonView (iOS)</a> </p>

<p>注意:我知道我的解决方案依赖于以下假设:区域/路径定义了足够多的点,以便至少有一个点落在圆圈中。 </p>

<p>提前致谢,</p>

<p>干杯,宝贝</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>好吧,我终于想通了。上面的代码应该按原样工作,除了循环中缺少 break 语句。原样的代码仅返回多边形的最后一个检查点。向 mapCoordinateIsInPolygon 插入一个测试,然后在内部循环中的 break 语句在第一个测试为正时立即离开循环,从而给出正确的结果。 ;-)</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 检查 map 上的点是否在覆盖范围内,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/6545054/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/6545054/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 检查 map 上的点是否在覆盖范围内