It is hard to imagine our life without maps. Maps are everywhere, even modern watches can have a map. Essentially maps are very complicated from the engineering perspective. Displaying thousands of objects, filtering, clustering, and making it possible on low-end devices are tough tasks.We will investigate modern engineering approaches using a realistic case and provide all key details and motivation behind the architecture. The case will be to develop a web map for searching property all over Ukraine. Key functional requirements: all objects should be on map, filters, text search. Key non-functional requirements: total number of objects, load time, filter time, search speed, amount of users, the budget.There are a lot of map libraries on the market, our research shows one most suitable for us. The map consists of different layers. The basic layer can be provided as a raster image or in vector format. Clustering is a key feature that makes it possible to display a huge amount of points. Clustering can be performed either in the browser or on the server-side. Server-side clustering is the most scalable solution but it creates additional challenges for filtering that is why we should provide different layers for the base layer and for clusters.Baseline architecture consists of the Static Content Server, Tile Server, Search Service, Geocoding Service. Tiles for Tile Server generated from OpenStreetMap data. Search Service uses Realty Database to generate clusters and provide additional information. Realty Storage filled by Realty Fetcher Service who takes them from open sources. Geocoding Service combines data from different providers(internal and external) in order to provide a reach user experience.Modern engineering approaches have distinguishable features: business-oriented, customer-oriented, heavily using open source to meet strict deadlines and budgets, scaleable, adaptable for changes, and fast releases.Manuscript received 31.05.2020
Read full abstract