如何在Google Maps SDK for iOS中让地图标签置于Polygon下方?
解决GMSOverlay显示在地图标签上方的方法
Google Maps的内置街道名称、POI标签默认绘制在所有GMSOverlay(如GMSPolygon、GMSPolyline)的上层,仅调整Overlay的zIndex无法改变这个层级关系——因为zIndex仅作用于同类型的Overlay之间。要让Overlay显示在标签上方(即标签在Overlay下方),可以通过以下两种方案实现:
方案一:设置Overlay优先级(推荐)
直接给GMSPolygon或GMSPolyline设置priority为.aboveLabels,即可让Overlay层级高于系统标签,透过半透明填充色仍能看到下方的标签内容:let polygon = GMSPolygon(path: yourPath) polygon.fillColor = UIColor(red: 0, green: 0, blue: 1, alpha: 0.3) polygon.strokeColor = .blue polygon.strokeWidth = 2 polygon.priority = .aboveLabels // 关键设置,让Polygon显示在标签上层 polygon.map = mapView方案二:自定义地图样式
如果不需要保留全部系统标签,可以通过自定义地图样式隐藏指定标签,之后再手动添加需要的标签内容并控制其层级:- 创建JSON格式的地图样式文件(示例为隐藏POI和街道标签):
[ { "featureType": "poi", "elementType": "labels", "stylers": [{"visibility": "off"}] }, { "featureType": "road", "elementType": "labels", "stylers": [{"visibility": "off"}] } ] - 将样式文件加入项目,应用到地图:
guard let styleURL = Bundle.main.url(forResource: "CustomMapStyle", withExtension: "json") else { return } do { mapView.mapStyle = try GMSMapStyle(contentsOfFileURL: styleURL) } catch { print("地图样式加载失败: \(error.localizedDescription)") }
- 创建JSON格式的地图样式文件(示例为隐藏POI和街道标签):
内容的提问来源于stack exchange,提问作者Victor Alonso Barberan
相关产品推荐
相关产品推荐

