在ios中制作圆形的MKMapView?

时间:2012-08-28 09:32:18

标签: iphone objective-c ios mapkit

我正在开发一个应用程序,我必须使用MKMapView创建地图,但是圆形?

对此有任何想法,任何线索也会有所帮助。

在屏幕截图中看到,你会明白我在问什么。

请参阅圆圈中的地图。

See the Map in Circle

2 个答案:

答案 0 :(得分:7)

这是一个棘手的方法,但它可能是你想要的!

添加QuartzCore.framework

#import <QuartzCore/QuartzCore.h>

//make circled shape

[yourMapView.layer setMasksToBounds:YES];
[yourMapView.layer setCornerRadius:160.0]; //here you've to pass width of yourMapView / 2

很高兴看到更多答案!! :)

答案 1 :(得分:1)

首先,如果您在使用卫星/航空照片时执行此操作,则会违反Google Maps Terms of Service

  

10个许可限制。除非条款明确允许,或者除非您事先获得Google(或适用的特定内容提供商)的书面授权,否则Google的上述许可均受您遵守以下所有限制的约束。除非第7节明确允许,否则您不得(也不允许任何其他人):

     

...

     10.7删除,隐藏或以任何方式更改任何警告,通知(包括但不限于任何版权或其他所有权声明),或服务或内容中出现的链接;

任何通告MKMapView都可能会模糊显示照片的版权声明。

我们可能希望MKMapView很快就会从使用Google数据更改为Apple数据,但可能会有类似的文字,您不能忽视它们。


除此之外,有两种方法可以使这项工作:

  1. 创建一个具有透明背景的UIView子类,使其drawRect方法在圆孔周围绘制,并使其pointInside:withEvent:方法返回NO同一个洞。将其中一个视图放在MKMapView
  2. 之上
  3. 创建一个带有不透明圆圈(或任何其他形状)的CAShapeLayer,并将其设为mask自己MKMapView的{​​{1}}。这将允许圆形地图出现在任何地方,但仍然可以与其不可见的角落进行交互。