开发者社区 问答 正文

Google-Maps-iOS-Utils中的GMUGeometryRenender忽略kml样式

新的和iOS(Android开发者.)。我试图使用iOSAPI将KML层覆盖到GoogleMap上。我使用了最新版本的谷歌地图和谷歌地图-iOS-Utils。KML特性呈现得很好,但是样式却被忽略了。我正在使用GitHub的Utils代码提供的KML_Sample.kml文件(这包含Googleplex上的彩色多边形-我检查了示例kml文件是否在网上正确呈现)。任何帮助都将不胜感激,因为我不知道问题出在哪里。下面是一个代码片段:

导入UIKit导入GoogleMaps

类MapViewController:UIViewController{

var mapView:GMSMapView = GMSMapView()

override func loadView() {

    let camera = GMSCameraPosition.camera(withLatitude: 37.42, longitude: -122.084, zoom: 13.0)
    mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)

    view = mapView
}

override func viewDidLoad() {
    super.viewDidLoad()

    let path = Bundle.main.path(forResource: "KML_Sample", ofType: "kml")
    let url = URL(fileURLWithPath: path!)
    let kmlParser = GMUKMLParser(url: url)
    kmlParser.parse()

    let renderer = GMUGeometryRenderer(map: mapView,geometries: kmlParser.placemarks,styles: kmlParser.styles)

    //the following line produces the same kml rendering on the google map - so styles are being ignored above :(
    //let renderer = GMUGeometryRenderer(map: mapView,geometries: kmlParser.placemarks)

    renderer.render()

    //add marker
    let position = CLLocationCoordinate2D(latitude: 37.42, longitude: -122.084)
    let marker = GMSMarker(position: position)
    marker.title = "Hello World"
    marker.map = mapView        
}

所显示的图像如下(多边形应该是彩色的,而不是默认的):

https://i.stack.imgur.com/vVyVD.png

展开
收起
游客5akardh5cojhg 2019-12-16 21:26:44 681 分享 版权
阿里云 AI 助理回答

在使用Google Maps SDK for iOS时,确保KML样式能够正确应用到地图上可能需要一些额外的检查和调整。根据你的描述,尽管KML文件中的特性(如多边形)被成功解析并显示在地图上,但它们的样式却没有得到应用。以下是一些可能的解决方案和检查点:

  1. 确认KML文件中样式定义正确:首先,请确保你的KML文件中确实包含了正确的样式定义,并且这些样式是按照KML规范正确格式化的。你可以使用在线的KML验证工具来检查你的KML文件是否有错误。

  2. 检查KML解析器配置:虽然你没有展示GMUKMLParser的详细配置,但请确认解析器是否正确设置以包含样式信息。通常情况下,如果使用的是标准的库方法,它应该会自动处理样式,但有时特定的实现细节或版本差异可能导致问题。

  3. 自定义样式应用:如果默认的解析和渲染机制未能应用KML中的样式,你可能需要手动为解析出的几何体指定样式。这可以通过遍历kmlParser.styles和将相应的样式应用到每个GMUGeometry上实现。不过,这通常是最后的手段,因为大多数时候SDK应能自动处理。

  4. 更新依赖库:确保你使用的Google Maps SDK for iOS以及相关的Utils库是最新的版本。有时候,问题可能是由于旧版本库中的已知bug导致的,而这些bug在新版本中可能已经被修复。

  5. 查看日志和错误信息:在解析和渲染过程中,开启详细的日志记录,查看是否有任何错误或警告信息提示关于样式加载或应用的问题。

  6. 社区和官方文档:查阅Google Maps SDK for iOS的官方文档和开发者论坛,看看是否有其他开发者遇到过类似问题及其解决方案。GitHub上的相关项目页面也经常有讨论和示例代码可以参考。

如果以上步骤都不能解决问题,考虑将具体问题、代码片段和KML文件简化后(去除敏感信息)发布到Stack Overflow或者Google Maps SDK的官方支持渠道,这样可以获得更专业的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答标签:
问答地址: