Ну, есть пара разных решений в зависимости от ваших потребностей.Чем выше требуемая точность, тем больше требуется работы.Мне нравится идея параметра MeanRadius Фила.Это дало бы вам приблизительное представление о том, какой полигон является ближайшим и его было бы довольно легко вычислить.Эта идея работает лучше всего, если многоугольники "кружатся".Если многоугольник имеет очень неправильную форму, эта идея теряет свою точность.
С математической точки зрения, вот что вы хотите сделать.Переберите все точки всех полигонов.Рассчитайте расстояние от этих точек до вашей текущей координаты.Тогда просто следите за тем, какой из них ближе всего.Есть одна последняя морщина.Представьте себе две точки, образующие очень длинный отрезок.Вы находитесь на расстоянии одного метра от средней точки линии.Что ж, расстояние до этих двух точек очень большое, хотя на самом деле вы очень близки к многоугольнику.Вам нужно будет рассчитать расстояние от вашей координаты до каждого возможного отрезка, что вы можете сделать различными способами, которые изложены здесь:
http://www.worsleyschool.net/science/files/linepoint/distance.html
Наконец, вам нужно спроситьсебя, я в каких-то полигонах?Если вы находитесь в 10 метрах от точки на многоугольнике, но на самом деле находитесь внутри многоугольника, очевидно, вы должны это учитывать.Лучший способ сделать это - использовать алгоритм приведения лучей:
http://en.wikipedia.org/wiki/Point_in_polygon#Ray_casting_algorithm