예제 #1
0
    def __init__(self, renderer, cache_dir):
        super(CustomMapLayer, self).__init__(renderer)
        self.cache_dir = cache_dir
        self.mercator = GlobalMercator()
        self.tileloader = None
        if self.tiles is not None:
            map_envelope = self.m.envelope()
            # map_envelope is in mercator projection, convert it to
            # long/lat projection
            envelope = renderer.merc_to_lnglat(map_envelope)
            min_lon = envelope.minx
            min_lat = envelope.miny
            max_lon = envelope.maxx
            max_lat = envelope.maxy

            width = self.m.width
            indexing = self.tiles.get('indexing')
            max_zoom = self.tiles.get('maxZoom')
            if indexing == 'google':
                self.tileloader = GoogleTileLoader(min_lat, min_lon, max_lat,
                                                   max_lon, width, max_zoom)
            elif indexing == 'tms':
                self.tileloader = TMSTileLoader(min_lat, min_lon, max_lat,
                                                max_lon, width, max_zoom)
            elif indexing == 'f':
                self.tileloader = FTileLoader(min_lat, min_lon, max_lat,
                                              max_lon, width, max_zoom)