Extensibility
Extending Your Maps
ThinkGeo products are built with extensibility in mind. Being able to extend and adapt a framework to your needs is a critical aspect of its usefulness. It allows for flexibility when requirements change and gives you a way to succeed when something doesn’t do exactly what you need it to do. Each of our components is built up in a pieces-and-parts way, assembling higher level features from smaller parts. This, coupled with overridable methods, allows you change nearly any aspect of the framework.
Extensibility means you can integrate your own data sources, create your own styles, tweak existing styles, draw to alternate canvases such as to a PDF, implement your own mathematical algorithms for shapes, and so much more. There is always a way to extend ThinkGeo maps to meet your requirements, both today and in the future.
ThinkGeo APIs are designed around a concept of 'minimal necessary overriding' for our abstract classes. What this means is that when extending our source, only the absolutely necessary methods need to be overriden - all other functionality works out-of-the-box. For example, when integrating a new data source, the only method that needs to be overridden is the 'GetAllFeatures' method, which requires you to pass back all of the possible features for this data source. With just this one method, we can calculate things such as spatial queries, maximum extent, record count, etc. without needing to override any other methods. If you would like to override other methods (for example, if your underlying storage format has an index that makes spatial queries very efficient), that option is still available to you. In this way, we only require the bare minimum to make features work and provide additional optional overrides based on what your upstream system supports.
As nearly every class has extensibility points, we only show samples for the most popular ones. That being said, we are always willing to help our customers extend our platform. This includes suggestions on how to integrate something, or making changes in the product that can be consumed through daily builds to our NuGet preview channel.
* Feature available, but no specific sample.