Это может быть связано с тем, что GPS использует сферическую (ish) систему координат, и вы пытаетесь напрямую сопоставить ее с декартовой системой координат (плоскостью).
Что вы можете сделать, это преобразовать ваши GPS-координаты в локальную базовую плоскость, а не отобразить их напрямую. Если вы считаете свое местоположение источником вашей системы координат, вы можете получить полярные координаты точек на плоскости земли относительно начала координат и истинного севера, используя расстояние по большому кругу (r) и направление (тета) между вашим местоположением и удаленную координату, а затем преобразуйте ее в декартовы координаты, используя (x, y) = (r * cos (theta), r * sin (theta)).
Еще раз лучше для вашего случая, когда у вас есть большой круговой подшипник, вы можете просто использовать ракурс r (расстояние). Это перетянет точки ближе к вам и в x, и в y, но они все равно будут в правильном относительном направлении, вам просто нужно как-то указать это.
Другой подход заключается в масштабировании размеров визуализируемых объектов, чтобы они увеличивались с увеличением расстояния для компенсации перспективы. Таким образом, вы можете напрямую использовать правильное положение и ориентацию.
Эта страница имеет алгоритмы определения направления / расстояния: http://www.movable -type.co.uk / scripts / latlong.html