2010-03-02 2 views
3

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

+1

Программируется? –

+0

yup. как север. – nicky

+1

Направление, на которое смотрит пользователь, или направление, в котором пользователь путешествует? Это две разные концепции. –

ответ

3

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

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

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

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

1

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

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

0

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 
    } 
} 
Смежные вопросы