swift + 百度地图 初始化BMKMapView崩溃 不报错 无打印 (一个愚蠢的错误。。。)



症状:导入正常,编译正常,没有打印manager start failed

但点击跳转到调用bmkmapview的页面就卡住,不打印也不报错,打断点显示,在bmkmapview  init的时候直接结束,内部错误。


因为manager start failed没有打印,就没有认为是manager的问题,一直在排查别的,最终没有办法,决定重写一遍,发现少写了

        _mapManager = BMKMapManager()  (这一排是绿色,所以一开始被忽略了)


但如果manager为nil,为什么没有start failed呢?

官方文档是这么写的。。。官方demo也是这么写的

        let ret = _mapManager?.start("在此处输入您的授权Key", generalDelegate: self) 
        if ret == false {
            NSLog("manager start failed!")
        }

(ret==nil,问题是nil != false ,所以并不会打印start failed。。。) 

。。。。。。瞎折腾了一天。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现地图的预显示,可以使用百度地图的瓦片缓存功能。瓦片缓存是指事先将地图的瓦片数据下载到本地进行缓存,用户在浏览地图时直接从本地读取缓存的瓦片,不需要再向服务器请求数据,从而可以节省网络流量和提高地图加载速度。 在 Swift 中,可以使用百度地图 SDK 提供的 BMKTileLayer 类来实现瓦片缓存。具体操作步骤如下: 1. 创建 BMKTileLayer 对象,并设置其 frame、tileSize、minZoom、maxZoom、zIndex 等属性。 ```swift let tileLayer = BMKTileLayer() tileLayer.frame = mapView.bounds tileLayer.tileSize = CGSize(width: 256, height: 256) tileLayer.minZoom = 3 tileLayer.maxZoom = 18 tileLayer.zIndex = -1 ``` 2. 设置瓦片 URL 模板,用于下载瓦片数据。其中 {x}、{y}、{z} 分别表示瓦片的横向坐标、纵向坐标和缩放级别。 ```swift let urlTemplate = "http://online1.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&udt=20180815&scaler=1&p=1" tileLayer.tileUrlTemplate = urlTemplate ``` 3. 开启瓦片缓存功能,并设置缓存路径和最大缓存大小。 ```swift BMKTileLayer.enableTilesCache(true) let cacheDir = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0] let cachePath = cacheDir + "/tiles" BMKTileLayer.setTileCacheMaxSize(100 * 1024 * 1024) // 最大缓存大小为100MB BMKTileLayer.setTileCachePath(cachePath) // 缓存路径 ``` 4. 将 BMKTileLayer 对象添加到地图上。 ```swift mapView.add(tileLayer) ``` 这样就可以实现百度地图的预显示,并且不会消耗过多的性能。如果需要更加精细的控制,可以参考百度地图 SDK 的官方文档和示例代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值