Outdoor, GPS is available all the time and for free. In any map app you use on your phone or even desktop, you see a dot with your location, with a pretty decent accuracy. That's a no-brainer and it's hard to remember that it only started in 1993.
Unfortunately, inside buildings it's not that simple. Because walls are blocking or reflecting satellite signals, the location provided by the GPS is usually not accurate at all, or even unavailable. Also the GPS is never able to provide information about the floor you are on.
So if you want to have positioning in your building, you need to deploy a different solution yourself, and therefore comes the first problem: it's not free! Actually it is often really expensive to deploy the infrastructure, maintain it, calibrate it and so on. You probably don't care that the initial GPS constellation cost $12 billion to put into orbit, that the operating cost is over $2 million a day, or that the Galileo project is expected to cost $10 billion. But are you willing to pay thousands of euros to equip your own building?
Also when GPS was developed, engineers relied on physical principles that could provide accurate distance measurement: measuring the travel time and phase shift of electro-magnetic waves. Inside buildings, Ultra-Wide Band and Ultra-Sonic solutions are using the same physical principles and therefore also provide accurate positioning. Unfortunately, those technologies are not embedded in standard smartphones and therefore are useless for general public cases.
The solutions that are available today for positioning with a smartphone all rely on technologies that were not developed at all with positioning in mind and that, by nature, are not able to provide distance measurement. BLE, Wifi, inertial, magnetic field, they all misuse sensors. We should not be surprised that the accuracy is disappointing. And trying to improve location will impact the other usages of the technology. For example, optimizing a wifi deployment for location is not the same as optimizing the deployment for data bandwidth
And keeping the worse for last: expectations. When meeting with clients who are thinking about deploying indoor positioning, they all expect the result to be always accurate by 1 meter, to follow movements instantly and to accurately detect floor changes within a few seconds. I'm not sure if it's the GPS or if it's the Indoor Location vendors themselves that built such expectations, but the result is that they are never satisfied.
With current solutions, an accuracy of 10 to 15 meters maximum should be expected. Often the floor is correct but definitely not always, especially if there are openings between floors.