谷歌地图iOS 10自定义标记问题

时间:2016-10-03 01:20:17

标签: ios objective-c google-maps ios10 gmsmapview

在新的iOS 10版本中,我注意到我的自定义GMSMarker视图呈现的方式与以前不同。我目前使用的是谷歌地图2.10,这是最新版本。

我的设置

首先,我为此示例以非常基本的方式创建了GMSMarker

GMSMarker *marker = [GMSMarker markerWithPosition:initialPosition];
marker.appearAnimation = kGMSMarkerAnimationNone;
marker.tracksViewChanges = NO;

marker.iconView = markerView;
marker.groundAnchor = CGPointMake(0.5, 0.5);
marker.map = self.mapView;

在上面的代码中,我创建了GMSMarker并为其分配了markerView,这是我编写的自定义UIView子类。该实现位于下方,称为GLMarkerView。切换语言,它将在Swift 3.0中。

@objc class GLMarkerView: UIView {
    init(store: GLStore?) {
        let circleFrame = CGRect(x: 0, y: 0, width: 40.0, height: 40.0)
        super.init(frame: circleFrame)

        backgroundColor = UIColor.red.withAlphaComponent(0.4)
        layer.cornerRadius = 20.0
        isOpaque = false
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

结果

所以上面的所有内容都是一个非常简单的布局,以确保我没有做任何导致此问题的特定内容。根据上面的代码,我应该看到GMSMapView上的标记,它们应该是半透明的红色圆圈。在iOS 9及更低版本上,这非常有效。我得到以下结果:

What the Map looks like on iOS 9

然而,当我在iOS 10上运行完全相同的代码时,我得到以下视图:

What the Map looks like on iOS 10

问题

出于某种原因,渲染中添加了这种较暗的背景,我不知道它来自哪里。执行查看调试,将UIView更改为设置isOpaque = false。尝试了很多东西来正确渲染它。

我注意到的一件事是,影响这不仅仅是透明度。如果我使用白色背景运行相同的代码,则圆圈的边框会出现奇怪的抗锯齿问题。

如果有人看到过这个问题并且知道修复它的方法,那么任何帮助都会得到更多的赞赏。如果您需要有关此问题的更多信息或对实施有任何疑问,请随时提出,我会尽快回复。提前谢谢!

0 个答案:

没有答案