菜鸟教程小白 发表于 2022-12-13 07:13:22

ios - 将叠加层添加到 Mapview


                                            <p><p>我已经做了几个月的 iOS 开发。我已经有一个 mapView ,上面固定了几个注释,可以显示用户当前的位置。 </p>

<p>我一直在尝试通读文档以使用一组 CLLocationCoordinate2D 绘制一条线(简单的静态路线)来实现简单的覆盖。这是一场斗争</p>

<p>我的 MkOverlayRenderer 方法似乎根本没有运行。如果我没记错的话,我不应该需要 MKMapViewDelegate。我正在尝试实现 MKOverlay 委托(delegate)并拥有“@synthesize boundingMapRect;”。 </p>

<p>这是我尝试实现 Overlay 的代码</p>

<pre><code>- (void)drawLineRoute
{
    CLLocationCoordinate2D purplePoints;
    purplePoints = CLLocationCoordinate2DMake(28.541944, -81.382936);
    purplePoints = CLLocationCoordinate2DMake(28.538447, -81.383096);

    MKPolyline *purplePolyline = ;
    purplePolyline.title = @&#34;Citrus Bowl Connection&#34;;

;
}

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView viewForOverlay:(id&lt;MKOverlay&gt;)overlay
{
if(])
{
    MKPolygonRenderer *polyRender = [ initWithOverlay:overlay];
    polyRender.lineWidth = 2;
    polyRender.strokeColor = ovoPurple;
    return polyRender;
}

return nil;
}
</code></pre>

<p>非常感谢任何帮助或指导。提前谢谢大家。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>有两种不同的委托(delegate)方法:</p>

<ul>
<li><p> <a href="https://developer.apple.com/library/prerelease/ios/documentation/MapKit/Reference/MKMapViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/MKMapViewDelegate/mapView:rendererForOverlay:" rel="noreferrer noopener nofollow"><code>mapView:rendererForOverlay:</code></a> ,在iOS 7中引入,返回一个<code>MKOverlayRenderer</code>;和</p></li>
<li><p> <a href="https://developer.apple.com/library/prerelease/ios/documentation/MapKit/Reference/MKMapViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/MKMapViewDelegate/mapView:viewForOverlay:" rel="noreferrer noopener nofollow"><code>mapView:viewForOverlay:</code></a> ,在 iOS 7 中已弃用,但它返回 <code>MKOverlayView</code>,而不是 <code>MKOverlayRenderer</code>。</p></li>
</ul>

<p>实现返回 <code>MKOverlayRenderer</code> 的 <code>viewForOverlay</code> 是不正确的。</p>

<p>底线,如果您需要支持 iOS 7 之前的 iOS 版本,请实现返回 <code>MKOverlayView</code> 而不是 <code>MKOverlayRenderer</code> 的 <code>viewForOverlay</code>。如果您不需要支持 7 之前的 iOS 版本,则根本不要实现 <code>viewForOverlay</code>,而是实现返回 <code>MKOverlayRenderer</code> 的 <code>rendererForOverlay</code> >.</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将叠加层添加到 Mapview,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/30246853/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/30246853/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将叠加层添加到 Mapview