Exemple #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)
Exemple #2
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)
Exemple #3
0
class CustomMapLayer(Layer):
    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)

    def draw(self):
        # clip drawing area, so everything out will be clipped
        zoom = self.style.get('zoom')
        self.ctx.save()
        self.ctx.scale(zoom, zoom)
        self.ctx.rectangle(0, 0, self.m.width, self.m.height)
        self.ctx.clip()
        if self.tileloader is not None:
            for tile in self._get_tiles():
                tile.draw()
        self.ctx.restore()

    def _get_tiles(self):
        tiles = list()
        url = self.tiles.get('url')
        http_headers = self.tiles.get('http_headers')
        tile_files = self.tileloader.download(self.cache_dir, url,
                                              http_headers)
        if tile_files is None:
            sys.stderr.write(
                "Error when downloading map tiles. Please try again later.\n")
            sys.exit(1)

        for filename in tile_files:
            tile = TileLayer(self.renderer, filename, self.mercator)
            tiles.append(tile)
        return tiles
Exemple #4
0
class CustomMapLayer(Layer):
    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)

    def draw(self):
        # clip drawing area, so everything out will be clipped
        zoom = self.style.get('zoom')
        self.ctx.save()
        self.ctx.scale(zoom, zoom)
        self.ctx.rectangle(0, 0, self.m.width, self.m.height)
        self.ctx.clip()
        if self.tileloader is not None:
            for tile in self._get_tiles():
                tile.draw()
        self.ctx.restore()

    def _get_tiles(self):
        tiles = list()
        url = self.tiles.get('url')
        http_headers = self.tiles.get('http_headers')
        tile_files = self.tileloader.download(self.cache_dir, url, http_headers)
        if tile_files is None:
            sys.stderr.write("Error when downloading map tiles. Please try again later.\n")
            sys.exit(1)

        for filename in tile_files:
            tile = TileLayer(self.renderer, filename, self.mercator)
            tiles.append(tile)
        return tiles