Пока придумал вести список последних N-координат (я взял 10) и
1.) сравнивать последнюю полученную с предыдущей на измененное расстояние. Если расстояние больше чем M-метров (в моем случае 100м), значит координата "захвачена" с базовой станции, а не GPS
if (GetDistance(x,y,x2,y2)>100) then Result:=false
2.) во время стоянки объекта проверять принадлежит ли последняя координата (Ш0,Д0) многоугольнику вершинами которого являются предыдущие координаты (Ш1,Д1) - (ШN, ДN).
type
tPolygon = array of tPoint; //tPoint - это запись, с двумя полями, x и y
...
function IsCoordInPoly(x,y: integer; myP: tPolygon): boolean; //x и y - это координаты
var //myP - массив с вершинами полигона
i,j,npol: integer;
inPoly: boolean;
begin
inPoly:=false;
npol:=length(myP)-1;
j:=npol;
for i:=0 to npol do
begin
if ((((myP[i].y<y) and (y<myP[j].y)) or ((myP[j].y<=y) and (y<myP[i].y))) and
(x>(myP[j].x-myP[i].x)*(y-myP[i].y) / (myP[j].y-myP[i].y)+myP[i].x))
then inPoly:=not inPoly;
j:=i;
end;
result:=inPoly;
end;
Но не оставляю надежды добраться до координат самого MapView