Как программно найти направление на ежевике? - PullRequest
3 голосов
/ 02 марта 2010

Как программно найти направление на ежевике с помощью GPS?

Ответы [ 3 ]

3 голосов
/ 02 марта 2010

При использовании GPS минимальное разрешение составляет около 3 метров.Если вы берете последовательные показания GPS и ищете значительные изменения в заданном направлении, это даст вам приблизительную оценку направления движения и, следовательно, вероятного направления, в котором находится человек.

Это не такхорошо, как магнитный компас, которого нет ни у одной из ежевик (Blackberrys?) на рынке в настоящее время.

В некоторых системах GPS есть два GPS-приемника, расположенных рядом друг с другом в известной ориентации.Они могут рассчитать, в каком направлении смотрит устройство, на основе сравнения двух показаний GPS.Они называют это GPS-компасом.Кроме того, эти системы слишком громоздки, чтобы их можно было включить в телефон на данный момент.

Вы можете использовать Blackberry API , чтобы найти информацию GPS, включая пройденный курс.хороший заголовок (метод getCourse).Это даст вам показания компаса с 0,00 на север.

1 голос
/ 02 марта 2010

Данные GPS не могут дать вам направление, это только дает вам позиции. Если у вас есть две позиции (например, где вы были 1 секунду назад и где вы сейчас находитесь), большинство реализаций, включая Blackberry, будет давать вам направление (направление) от одной точки к другой.

Устройства Android и IIRC iPHone 3G с цифровыми магнитными компасами могут подсказать вам направление. Я не верю, что есть какие-нибудь ежевики, оснащенные компасами.

0 голосов
/ 03 марта 2010

GPS API в Java Micro, который использует Blackberry, даст вам направление, в котором движется телефон. Вот фрагмент класса GPS, который извлекает основную информацию GPS:

/**
 * This will start the GPS
 */
public GPS() {
    // Start getting GPS data
    if (currentLocation()) {
        // This is going to start to try and get me some data!
    }
}

private boolean currentLocation() {
    boolean retval = true;
    try {
        LocationProvider lp = LocationProvider.getInstance(null);
        if (lp != null) {
            lp.setLocationListener(new LocationListenerImpl(), interval, 1, 1);
        } else {
            // GPS is not supported, that sucks!
            // Here you may want to use UiApplication.getUiApplication() and post a Dialog box saying that it does not work
            retval = false;
        }
    } catch (LocationException e) {
        System.out.println("Error: " + e.toString());
    }

    return retval;
}

private class LocationListenerImpl implements LocationListener {
    public void locationUpdated(LocationProvider provider, Location location) {
        if (location.isValid()) {
            heading = location.getCourse();
            longitude = location.getQualifiedCoordinates().getLongitude();
            latitude = location.getQualifiedCoordinates().getLatitude();
            altitude = location.getQualifiedCoordinates().getAltitude();
            speed = location.getSpeed();

            // This is to get the Number of Satellites
            String NMEA_MIME = "application/X-jsr179-location-nmea";
            satCountStr = location.getExtraInfo("satellites");
            if (satCountStr == null) {
                satCountStr = location.getExtraInfo(NMEA_MIME);
            }

            // this is to get the accuracy of the GPS Cords
            QualifiedCoordinates qc = location.getQualifiedCoordinates();
            accuracy = qc.getHorizontalAccuracy();
        }
    }

    public void providerStateChanged(LocationProvider provider, int newState) {
        // no-op
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...