有没有办法旋转MKMapView并仍显示Google徽标?

时间:2010-12-10 12:32:48

标签: iphone mkmapview

好的,所以我已经看到了一些类似的问题,但似乎找不到任何真正回答这个问题的问题。

我正在旋转(或想要)MKMapView:

[mapView setTransform:CGAffineTransformMakeRotation(angle)];

这很好用,除了Google徽标随之旋转,我听说这是不行的。另外我想让我的mapView比屏幕更大,这样当旋转时整个屏幕仍然显示地图,但这也会将Google Logo移出屏幕。

因此可以旋转MkMapView并仍显示Google徽标???也许可以打电话给某些Google Web AP

2 个答案:

答案 0 :(得分:2)

所以我找到了一种方法来做到这一点,虽然我仍觉得它有点像黑客,因为苹果可能会在未来的版本中改变一些会破坏这种技术的东西。

MKMapView有2个子视图。其中一个是UIImageView,其中包含用于版权目的的“Google”图像。

因此,在IB中,您可以设置位于左下角的自己的UIImageView,在代码中,您可以将其图像设置为与地图视图内UIImageView中的图像相同的图像:

-(void) getImage {
    for(UIView *v in mapView.subviews) {

        if([v isKindOfClass:[UIImageView class]]) {
            NSLog(@"%@",v);
            self.cpyView.image=((UIImageView *)v).image;
        }
    }

}

现在,当您旋转MKMapView时,您的UIImageView将不会旋转。

现在另一个技巧是让MKMapView嵌入另一个视图(viewForMap)(想法来自于Wei-Meng Lee的Beginning iOS 4)。

将UIView放入IB并将其大小调整为您希望可见地图的大小。将其设置为剪切IB中的子视图。

在代码中你将分配] initWithFrame一个MKMapView,以便MKMapView以这个viewForMap为中心,但是比它大。

例如,如果你的viewForMap是320,372,那么这样做:

mapView=[[MKMapView alloc] initWithFrame:CGRectMake(-90,-64,500,500)];
mapView.mapType=MKMapTypeHybrid;
mapView.delegate=self;
[viewForMap addSubview:mapView];

现在您可以旋转地图mapView.transform=CGAffineTransformMakeRotation(-M_PI/2);

持有“Google”图片的UIImageView不会被旋转,因此会保持可见状态。 MKMapView中的“Google”图像将在屏幕外显示。

答案 1 :(得分:0)

你可以这样做:

  1. 在任何图像编辑程序中制作照片“Google”徽标。
  2. 增加不会看到徽标的MKMapView的大小。
  3. 将图片的子视图添加到MKMapView。
  4. 如果您没有Google的徽标,您的申请将被拒绝,具体如下:

    8.6如果原始内容的所有品牌特征保持不变且完全可见,则可以在应用程序中使用通过Google Maps API获取的Google地图和Google地球图像。覆盖或修改Google徽标或版权所有者身份的应用将被拒绝

    最重要的是,请使用:http://wiki.openstreetmap.org/wiki/IPhone