| 300 | } |
| 301 | |
| 302 | Retrieval::ExtendedFeatures RetrieveGeometryFeaturesImpl(MwmContext const & context, |
| 303 | base::Cancellable const & cancellable, m2::RectD const & rect, |
| 304 | int scale) |
| 305 | { |
| 306 | EditedFeaturesHolder holder(context.GetId()); |
| 307 | |
| 308 | covering::Intervals coverage; |
| 309 | CoverRect(rect, scale, coverage); |
| 310 | |
| 311 | vector<uint64_t> features; |
| 312 | vector<uint64_t> exactlyMatchedFeatures; |
| 313 | |
| 314 | FeaturesCollector collector(cancellable, features, exactlyMatchedFeatures); |
| 315 | |
| 316 | context.ForEachIndex(coverage, scale, collector); |
| 317 | |
| 318 | holder.ForEachModifiedOrCreated([&](EditableMapObject const & emo, uint64_t index) |
| 319 | { |
| 320 | auto const center = emo.GetMercator(); |
| 321 | if (rect.IsPointInside(center)) |
| 322 | features.push_back(index); |
| 323 | }); |
| 324 | return SortFeaturesAndBuildResult(std::move(features), std::move(exactlyMatchedFeatures)); |
| 325 | } |
| 326 | |
| 327 | template <typename T> |
| 328 | struct RetrieveAddressFeaturesAdaptor |
no test coverage detected