Чтобы использовать несколько полигонов в одном запросе, вам необходимо определить их под знаками < >. Каждый многоугольник должен иметь индивидуальное имя. Если вы хотите искать в нескольких полигонах, чем использовать оператор OR {{} "в запросе.
Пример с двумя полигонами и один круг может выглядеть следующим образом:
<query>
{><polygon1 ><polygon2 ><circle1}
</query>
<shapes>
<polygon1>lat1 lon1; lat2 lon2; lat3 lon3; lat4 lon4; lat5 lon5; ...
<coord1_tag_name>lat</coord1_tag_name>
<coord2_tag_name>lon</coord2_tag_name>
</polygon1>
<polygon2>lat1 lon1; lat2 lon2; lat3 lon3; lat4 lon4; lat5 lon5; ...
<coord1_tag_name>lat</coord1_tag_name>
<coord2_tag_name>lon</coord2_tag_name>
</polygon2>
<circle1>
<center>lat lon</center>
<radius>10 km</radius> <!-- here you can define distance in "km" or in "mi" -->
<coord1_tag_name>lat</coord1_tag_name>
<coord2_tag_name>lon</coord2_tag_name>
</circle1>
</shapes>
Если полигоны перекрываются, то соответствующие точки в этой области не будет «дублировать» в наборе результатов (будет отображаться один раз).
Вы должны предоставить нам более подробную информацию о том, как ваш API обертывает API Overpass или как вы обслуживаете локальную базу данных OSM. – MaM
@MaM, я считаю, что база данных основана на экспортированных данных POI с Open Street Maps, поэтому она не связана с Overpass вообще, просто с масштабируемыми данными. – romaninsh