如何删除位于可见区域之外的Tile Layers Google Maps SDK for iOS

时间:2015-12-11 14:31:37

标签: ios swift google-maps-sdk-ios

我试图删除所有标题都在可见性之外。我从我的服务器下载标题。为了节省内存,我想删除不可见的标题

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {       
        let urls = { (x: UInt, y: UInt, zoom: UInt) -> NSURL in
            let url = "http://example.com/tiles/\(zoom)/\(x)/\(y).png"
            var dataOfTileXYZJson :Dictionary<NSString,UInt> = [:]
            dataOfTileXYZJson["dataOfTileX"] = x as UInt
            dataOfTileXYZJson["dataOfTileY"] = y as UInt
            dataOfTileXYZJson["dataOfTileZ"] = zoom as UInt
            JsonData.sendTilesCoordJsonToServer(dataOfTileXYZJson)
            dataOfTileXYZJson.removeAll(keepCapacity: true)
            return NSURL(string: url)!
        }

        let visibleRegion : GMSVisibleRegion = viewMap.projection.visibleRegion()
        let bounds = GMSCoordinateBounds(coordinate: visibleRegion.nearLeft, coordinate: visibleRegion.farRight)
        let layerTile = GMSURLTileLayer(URLConstructor: urls)
        layerTile.zIndex = 100
        layerTile.map = self.viewMap!
 }

但我无法弄清楚如何确定标题不属于可见区域。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您的挑战是找到各个瓷砖的边界框。 Google地图使用与Open StreetMap相同的投影(切片方案),因此您可以使用他们的文档查找所需的公式。

http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Tile_bounding_box

看看边界框&#39; Java部分下的计算。这应该可以为您提供获得单个图块边界所需的内容。完成后,您可以使用bounds.intersectsBounds(tileBounds)来确定该图块是否属于可见区域。