A method, comprising: defining one or more islands (315, 325, 335, 345, 355, 365, 375, 385, 395), each island being a subdivision of a geographical region comprising an indoor area, wherein each island includes one or more access points located in the island (412, 414, 416, 418, 510, 512, 514, 516, 518), where any access point in an island is likely not visible outside that island; maintaining identifiers of the access points included in each island; building for each island, using a processor, a first classifier, the first classifier including one or more decision trees (600, 700) executable using one or more signals received by a mobile device (480, 580), the output of the one or more decision trees of the first classifier indicating a level of the indoor area; and building for each level, using the processor, a second classifier, the second classifier including one or more decision trees (600, 700) executable using the one or more signals received by the mobile device (480, 580), the output of the one or more decision trees of the second classifier indicating a position on the level, wherein the one or more decision trees included in the first and second classifiers comprise: starting nodes, the starting nodes presenting first questions related to the one or more signals received by the mobile device; and intermediate nodes, each intermediate node presenting an additional question related to the one or more signals received by the mobile device; and wherein: the first classifier is downloadable to the mobile device, to be executed by the mobile device, using the one or more signals, to determine the level of an island in which the mobile device is located; and the second classifier is downloadable to the mobile device, to be executed by the mobile device, using the one or more received signals, to determine the position on the level. defining one or more islands (315, 325, 335, 345, 355, 365, 375, 385, 395), each island being a subdivision of a geographical region comprising an indoor area, wherein each island includes one or more access points located in the island (412, 414, 416, 418, 510, 512, 514, 516, 518), where any access point in an island is likely not visible outside that island; maintaining identifiers of the access points included in each island; building for each island, using a processor, a first classifier, the first classifier including one or more decision trees (600, 700) executable using one or more signals received by a mobile device (480, 580), the output of the one or more decision trees of the first classifier indicating a level of the indoor area; and building for each level, using the processor, a second classifier, the second classifier including one or more decision trees (600, 700) executable using the one or more signals received by the mobile device (480, 580), the output of the one or more decision trees of the second classifier indicating a position on the level, wherein the one or more decision trees included in the first and second classifiers comprise: starting nodes, the starting nodes presenting first questions related to the one or more signals received by the mobile device; and intermediate nodes, each intermediate node presenting an additional question related to the one or more signals received by the mobile device; starting nodes, the starting nodes presenting first questions related to the one or more signals received by the mobile device; and intermediate nodes, each intermediate node presenting an additional question related to the one or more signals received by the mobile device; and wherein: the first classifier is downloadable to the mobile device, to be executed by the mobile device, using the one or more signals, to determine the level of an island in which the mobile device is located; and the second classifier is downloadable to the mobile device, to be executed by the mobile device, using the one or more received signals, to determine the position on the level. the first classifier is downloadable to the mobile device, to be executed by the mobile device, using the one or more signals, to determine the level of an island in which the mobile device is located; and the second classifier is downloadable to the mobile device, to be executed by the mobile device, using the one or more received signals, to determine the position on the level.