| 2843 | } |
| 2844 | |
| 2845 | vector<osm::LocalizedStreet> TakeSomeStreetsAndLocalize(vector<search::ReverseGeocoder::Street> const & streets, |
| 2846 | DataSource const & dataSource) |
| 2847 | |
| 2848 | { |
| 2849 | vector<osm::LocalizedStreet> results; |
| 2850 | // Exact feature street always goes first in Editor UI street list. |
| 2851 | |
| 2852 | // Reasonable number of different nearby street names to display in UI. |
| 2853 | constexpr size_t kMaxNumberOfNearbyStreetsToDisplay = 8; |
| 2854 | for (auto const & street : streets) |
| 2855 | { |
| 2856 | auto const isDuplicate = find_if(begin(results), end(results), [&street](osm::LocalizedStreet const & s) |
| 2857 | { return s.m_defaultName == street.m_name || s.m_localizedName == street.m_name; }) != results.end(); |
| 2858 | if (isDuplicate) |
| 2859 | continue; |
| 2860 | |
| 2861 | osm::LocalizedStreet ls; |
| 2862 | if (!LocalizeStreet(dataSource, street.m_id, ls)) |
| 2863 | continue; |
| 2864 | |
| 2865 | results.emplace_back(std::move(ls)); |
| 2866 | if (results.size() >= kMaxNumberOfNearbyStreetsToDisplay) |
| 2867 | break; |
| 2868 | } |
| 2869 | return results; |
| 2870 | } |
| 2871 | |
| 2872 | void SetStreet(search::ReverseGeocoder const & coder, DataSource const & dataSource, FeatureType & ft, |
| 2873 | osm::EditableMapObject & emo) |
no test coverage detected