QList< std::shared_ptr<const OsmAnd::Road> > OsmAnd::RoadLocator_P::findRoadsInAreaEx( const PointI position31, const double radiusInMeters, const RoutingDataLevel dataLevel, const ObfRoutingSectionReader::VisitorFunction filter, QList< std::shared_ptr<const ObfRoutingSectionReader::DataBlock> >* const outReferencedCacheEntries) const { QList< std::shared_ptr<const Road> > roadsInBBox; const auto bbox31 = (AreaI)Utilities::boundingBox31FromAreaInMeters(radiusInMeters, position31); const auto obfDataInterface = owner->obfsCollection->obtainDataInterface( &bbox31, MinZoomLevel, MaxZoomLevel, ObfDataTypesMask().set(ObfDataType::Routing)); obfDataInterface->loadRoads( dataLevel, &bbox31, &roadsInBBox, nullptr, nullptr, owner->cache.get(), outReferencedCacheEntries, nullptr, nullptr); return findRoadsInArea( roadsInBBox, position31, radiusInMeters, filter); }
QList< std::shared_ptr<const OsmAnd::Road> > OsmAnd::CachingRoadLocator_P::findRoadsInArea( const PointI position31, const double radiusInMeters, const RoutingDataLevel dataLevel) const { QList< std::shared_ptr<const Road> > roadsInBBox; const auto bbox31 = (AreaI)Utilities::boundingBox31FromAreaInMeters(radiusInMeters, position31); const auto obfDataInterface = owner->obfsCollection->obtainDataInterface(bbox31); QList< std::shared_ptr<const ObfRoutingSectionReader::DataBlock> > referencedCacheEntries; obfDataInterface->loadRoads( dataLevel, &bbox31, &roadsInBBox, nullptr, nullptr, &_cache, &referencedCacheEntries, nullptr, nullptr); { QMutexLocker scopedLocker(&_referencedDataBlocksMapMutex); for (auto& referencedBlock : referencedCacheEntries) _referencedDataBlocksMap[referencedBlock.get()].push_back(qMove(referencedBlock)); } return RoadLocator::findRoadsInArea(roadsInBBox, position31, radiusInMeters); }