wiki:MapGuideRfc107

MapGuide RFC 107 - Enhance Tile service to add a new API GenerateTile

This page contains a change request (RFC) for the MapGuide Open Source project. More MapGuide RFCs can be found on the RFCs page.

Status

RFC Template Version(1.0)
Submission DateJuly 23, 2010
Last ModifiedTed Yang Aug 17, 2010
AuthorTed Yang
RFC Statussuperceded
Implementation Statusincomplete
Proposed Milestone2.3
Assigned PSC guide(s)
Voting History
+1
+0
-0
-1
Abstained

Overview

This RFC proposes to add a NEW GenerateTile() API to the tile service. This new API will generate the tile on the server but not get the image from server.

Motivation

MapGuide users want to allow easy pre-seeding of base map tiles, for example, to generate all the tiles of a map at one time, now they can call the API GetTile:

Existing API:

    MgByteReader* GetTile(MgResourceIdentifier* mapDefinition,CREFSTRING baseMapLayerGroupName,INT32 tileColumn,INT32 tileRow,INT32 scaleIndex);

There's one problem with this existing API, suppose the user run a tool(like Maestro MgCooker) on the client PC to generate all the tiles of a map, the client will get the tile images from the server. Actually the user just want to generate the tiles on the server to make the rendering/navigation of a map more smooth. But the transfer of the tile images will increase the cost to finish this job(usually thousands of tiles will be generate). So this RFC want to add a NEW API GenerateTile which generate the tile on the server and only return a bool value.

Proposed Solution

Create a NEW GenerateTile() API which return a bool value to indicate the tile generation is successful or not.

Proposed NEW API:

    /////////////////////////////////////////////////////////////////
    /// \brief
    /// Generate the specified base map tile for the given map. If a cached tile
    /// image exists return true, if not exists, the tile will be
    /// rendered and added to the cache, then return true.
    /// Any exception or error will return false.
    ///
    /// \param mapDefinition
    /// Input
    /// Resource identifier for the map definition
    /// \param baseMapLayerGroupName
    /// Input
    /// Specifies the name of the baseMapLayerGroup for which to render the tile.
    /// \param tileColumn
    /// Input
    /// Specifies the column index of the tile to return.
    /// \param tileRow
    /// Input
    /// Specifies the row index of the tile to return.
    /// \param scaleIndex
    /// Input
    /// Scale index to render.  Most detailed scale is index 0.
    ///
    /// \return
    /// A bool value to indicate the tile generation is successful or not.
    ///
    virtual bool GenerateTile(
        MgResourceIdentifier* mapDefinition,
        CREFSTRING baseMapLayerGroupName,
        INT32 tileColumn,
        INT32 tileRow,
        INT32 scaleIndex) = 0;

Implications

This change will NOT break existing API compatibility.

Test Plan

  • Build/Run on Windows/Linux
  • New Unit test for GenerateTile will be added

Funding/Resources

Supplied by Autodesk.

Last modified 7 years ago Last modified on Aug 16, 2010 8:12:51 PM