как узнать точку устройства gps в каком направлении?

В настоящее время мне удается получить степени направления, используя приведенный ниже код:

d = Math.Atan2(Math.Sin(long2 - long1) * Math.Cos(lat2), _
    Math.Cos(lat1) * Math.Sin(lat2) - Math.Sin(lat1) * Math.Cos(lat2) * Math.Cos(long2 - long1))

Dim direction As Double = (RadToDeg(d) + 360.0) Mod 360

что, в моем случае, скажем, я получил 250.65°

Я назначаю каждое из значений direction от 0 до 360 своему конкретному изображению из imageList, которое загружается в файл pictureBox. (в настоящее время у меня есть 36 изображений компаса с разным направлением стрелки, каждое из которых представляет 10 градусов)

Когда мое устройство направлено на север, изображение стрелки показывает правильное направление, но когда я поворачиваю устройство (указывающее в любом месте, кроме севера), изображение стрелки не меняется, означает, что он больше не показывает правильное направление.

Итак, мой вопрос: можно ли узнать, в каком направлении указано устройство GPS?

Изменить: я использую сканфон Honeywell Dolphin 6000


person DnR    schedule 04.03.2014    source источник


Ответы (4)


В документации Honeywell Dolphin 6000 не упоминается магнитометр или компас, так что вы, вероятно, СОЛ. Но если он у него есть, вы сможете найти способы доступа к нему в SDK

Я рекомендую загружать и просматривать любые API и документы, поставляемые с SDK, и искать ссылки на магнитометр или компас. У Microsoft нет стандартных API для доступа к этим датчикам в Windows Mobile, поэтому для получения этой информации вам понадобится SDK от Honeywell.

person PaulH    schedule 12.03.2014
comment
У Microsoft нет стандартных API-интерфейсов для доступа к этим датчикам в Windows Mobile :- Если это правда, то этого достаточно, чтобы положить конец моим мучениям в поисках ответа!. У меня с собой SDK от Honeywell, и нет никакого API, связанного с магнитометром или GPS. Так что я думаю, мне нужно новое устройство :( - person DnR; 12.03.2014

Если я правильно понимаю ваш вопрос, похоже, вы пытаетесь определить курс, когда ваше положение зафиксировано, и вы только вращаете устройство.

К сожалению, то, что вы ищете, невозможно с GPS.

И формула, которую вы используете, и GetPosition.Heading являются расчетным заголовком, основанным на выборке вашей текущей Широты/Долготы и вашей предыдущей Широты/Долготы. Таким образом, если вы не двигаетесь в определенном направлении (или двигаетесь очень медленно), ваши текущие и предыдущие значения широты/долготы будут практически одинаковыми, что снижает точность вычисленного направления.

Единственный надежный способ получить направление, когда ваше положение относительно фиксировано, — это приобрести магнитный или гироскопический компас, который может быть встроен в некоторые устройства.

person psubsee2003    schedule 05.03.2014
comment
именно то, что я имею в виду. Я использую устройство Dolphin 6000 Scanphone Honeywell и полагаю, что оно имеет встроенный магнитный компас, но я просто не могу понять, как получить от него информацию. - person DnR; 06.03.2014

"как узнать направление GPS-устройства?"

с помощью промежуточного драйвера GPS GetPosition.Heading покажет вам текущее направление, в котором вы находитесь Заголовок.

Как указано в документации GPS_POSITION,

"flHeading
"Heading, in degrees. A heading of zero is true north."
person Baby    schedule 05.03.2014
comment
я пробовал это. но значение GetPosition.Heading кажется неточным даже близко - person DnR; 05.03.2014

Вы должны различать направление, в котором вы движетесь, которое называется азимутом или курсом. И направление, в котором вы смотрите или держите свое устройство. (Представьте, что вы сидите в автобусе, который едет на север (курс = 0°), где вы делаете фото в направлении на запад. курс = 270°)

(Потребительский) GPS-приемник всегда возвращает только курс (или азимут), хотя некоторые API, к сожалению, иногда называют его курсом.

Чтобы узнать направление, в котором вы держите устройство, стоя на месте, вы должны использовать магнитометр. Некоторые современные смартфоны, такие как iPhone или Android, имеют встроенную функцию.

Дополнительный совет:
Если на вашем устройстве есть GPS, НЕ рассчитывайте положение по вашей или другим формулам, лучше возьмите значение из GPS Api. Это намного точнее. Чип GPS НЕ только вычисляет направление по изменению положения, он также может использовать физический доплеровский сдвиг.

person AlexWien    schedule 10.03.2014
comment
так что единственный способ узнать направление, в котором мы держим устройство, стоя на месте, через магнитометр? Я использую Honeywell Устройство Dolphin 6000 Scanphone, но теперь проблема в том, что в некоторых документах говорится, что у него есть магнитометр, а в некоторых нет. я запутался - person DnR; 11.03.2014