Changes between Version 14 and Version 15 of MapGuideRfc117
- Timestamp:
- 09/07/11 19:11:04 (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
MapGuideRfc117
v14 v15 35 35 > Although the current build is tightly bound to a server service, it would be useful to create a build profile (free of any server dependencies) that provided a desktop developer to quickly add spatial visualisation and interactivity to their application. 36 36 37 The web and server-centric nature of MapGuide means that it is currently not possible to have a '''truly disconnected''' desktop client mapping application. Under MapGuide 6.5, this was somewhat possible by using the technique of embedding the ActiveX viewer control and loading a MWF filled with static layer data. Under the current MapGuide, there is nothing that approaches this kind of setup in terms of installation and resource footprint. Currently, if you want to build a MapGuide "desktop" application, you '''have''' to have a MapGuide Server and Web Tier present on the desktop and incur the overhead of having both of these running at the same time. 37 The web and server-centric nature of MapGuide means that it is currently not possible to have a '''truly disconnected''' desktop client mapping application. Under MapGuide 6.5, this was somewhat possible by using the technique of embedding the ActiveX viewer control and loading a MWF filled with static layer data. If you wind the clock even further back, Autodesk had a specialized product for this purpose (Envision/OnSite Desktop) which has long since been discontinued. 38 39 Under the current MapGuide, there is nothing that approaches this kind of setup in terms of installation and resource footprint. Currently, if you want to build a MapGuide "desktop" application, you '''have''' to have a MapGuide Server and Web Tier present on the desktop and incur the overhead of having both of these running at the same time. 38 40 39 41 Clayton Hotson's [http://au.autodesk.com/?nd=class&session_id=5241 AU 2009 Presentation] showed that it was indeed possible to utilize components of the MapGuide stack '''outside''' of the MapGuide Server to create applications that have no server or web tier dependencies (in the case of the AU presentation: A map renderer). … … 65 67 * MgTileService 66 68 69 Also included in mg-desktop, is a WinForms-based map viewer component library which has 80% of the functionality of the AJAX/Fusion viewer, which can be embedded in your own .net applications. The missing 20% is mainly support for tiled map layers and maps with dynamic/tiled layer combinations. 70 67 71 In terms of implementation details: 68 72 … … 145 149 {{{ 146 150 147 class M gdFeatureService : public MgFeatureService151 class MG_DESKTOP_API MgdFeatureService : public MgFeatureService 148 152 { 149 153 ... … … 180 184 // Deletes features from the specified feature class of the specified feature source with the specified filter using the specified transaction 181 185 int DeleteFeatures(MgResourceIdentifier* resource, CREFSTRING className, CREFSTRING filter, MgTransaction* trans); 186 }; 187 188 }}} 189 190 === MgdLayer === 191 192 Adds extra convenience methods for new APIs in MgdFeatureService 193 194 {{{ 195 196 class MG_DESKTOP_API MgdLayer : public MgLayerBase 197 { 198 ... 199 200 PUBLISHED_API: 201 //Convenience form of MgFeatureService::BeginTransaction() 202 virtual MgTransaction* BeginTransaction(); 203 204 //Convenience form of MgdFeatureService::SelectFeaturesExtended() 205 virtual MgdScrollableFeatureReader* SelectFeaturesExtended(MgFeatureQueryOptions* options); 206 207 //Convenience form of MgdFeatureService::InsertFeatures() 208 virtual MgFeatureReader* InsertFeatures(MgPropertyCollection* propertyValues); 209 210 //Convenience form of MgdFeatureService::UpdateFeatures() 211 virtual int UpdateFeatures(MgPropertyCollection* propertyValues, CREFSTRING filter); 212 213 //Convenience form of MgdFeatureService::DeleteFeatures() 214 virtual int DeleteFeatures(CREFSTRING filter); 215 216 //Convenience form of MgdFeatureService::InsertFeatures() 217 virtual MgFeatureReader* InsertFeatures(MgPropertyCollection* propertyValues, MgTransaction* trans); 218 219 //Convenience form of MgdFeatureService::UpdateFeatures() 220 virtual int UpdateFeatures(MgPropertyCollection* propertyValues, CREFSTRING filter, MgTransaction* trans); 221 222 //Convenience form of MgdFeatureService::DeleteFeatures() 223 virtual int DeleteFeatures(CREFSTRING filter, MgTransaction* trans); 182 224 }; 183 225 … … 216 258 217 259 * MgTransaction support 260 * Aliases 218 261 219 262 In terms of compatibility, existing MapGuide application code is compatible at the source code level provided the code is targeting the subset of the MapGuide API that is supported and implemented by this desktop API. … … 229 272 It is planned, should this RFC be approved, to put the migrated source into a "Desktop" top-level directory under MgDev. This will have minimal impact on the rest of the source tree. 230 273 231 Also if it hasn't been made clear already, this RFC only concerns the desktop API and not something like a desktop map viewer. The intention behind this RFC is to add the infrastructure to make it possible for such applications to be created. A desktop map viewer may exist in the future as a separate RFC.232 233 274 There are no plans to make this desktop API production ready for the 2.3 milestone. The scope of this RFC is to simply have the source of the desktop implementation integrated into the MapGuide source tree in a functional state by that stage. Unless there is interest from Autodesk, maintenance and enhancement of this codebase to keep up to date with future upstream platform and component changes will be a community responsibility 234 275