本文整理汇总了C++中GeoDataCoordinates类的典型用法代码示例。如果您正苦于以下问题:C++ GeoDataCoordinates类的具体用法?C++ GeoDataCoordinates怎么用?C++ GeoDataCoordinates使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GeoDataCoordinates类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TileId
TileId TileId::fromCoordinates(const GeoDataCoordinates &coords, int zoomLevel)
{
if ( zoomLevel < 0 ) {
return TileId();
}
const int maxLat = 90 * 1000000;
const int maxLon = 180 * 1000000;
int lat = GeoDataCoordinates::normalizeLat( coords.latitude( GeoDataCoordinates::Degree ), GeoDataCoordinates::Degree ) * 1000000;
int lon = GeoDataCoordinates::normalizeLon( coords.longitude( GeoDataCoordinates::Degree ), GeoDataCoordinates::Degree ) * 1000000;
int x = 0;
int y = 0;
for( int i=0; i<zoomLevel; ++i ) {
const int deltaLat = maxLat >> i;
if( lat <= ( maxLat - deltaLat )) {
y += 1<<(zoomLevel-i-1);
lat += deltaLat;
}
const int deltaLon = maxLon >> i;
if( lon >= ( maxLon - deltaLon )) {
x += 1<<(zoomLevel-i-1);
} else {
lon += deltaLon;
}
}
return TileId(0, zoomLevel, x, y);
}
示例2: reverseGeocodingFinished
void GosmoreRunner::reverseGeocoding( const GeoDataCoordinates &coordinates )
{
if ( !d->m_gosmoreMapFile.exists() )
{
emit reverseGeocodingFinished( coordinates, GeoDataPlacemark() );
return;
}
QString queryString = "flat=%1&flon=%2&tlat=%1&tlon=%2&fastest=1&v=motorcar";
double lon = coordinates.longitude( GeoDataCoordinates::Degree );
double lat = coordinates.latitude( GeoDataCoordinates::Degree );
queryString = queryString.arg( lat, 0, 'f', 8).arg(lon, 0, 'f', 8 );
QByteArray output = d->retrieveWaypoints( queryString );
GeoDataPlacemark placemark;
placemark.setCoordinate( coordinates );
QStringList lines = QString::fromUtf8( output ).split( '\r' );
if ( lines.size() > 2 ) {
QStringList fields = lines.at( lines.size()-2 ).split(',');
if ( fields.size() >= 5 ) {
QString road = fields.last().trimmed();
placemark.setAddress( road );
GeoDataExtendedData extendedData;
extendedData.addValue( GeoDataData( "road", road ) );
placemark.setExtendedData( extendedData );
}
}
emit reverseGeocodingFinished( coordinates, placemark );
}
示例3: containsPoint
bool MonavMap::containsPoint( const GeoDataCoordinates &point ) const
{
// If we do not have a bounding box at all, we err on the safe side
if ( m_boundingBox.isEmpty() ) {
return true;
}
// Quick check for performance reasons
if ( !m_boundingBox.contains( point ) ) {
return false;
}
if ( m_tiles.isEmpty() ) {
return true; // Tiles discarded for performance reason
}
// GeoDataLinearRing does a 3D check, but we only have 2D data for
// the map bounding box. Therefore the 3D info of e.g. the GPS position
// must be ignored.
GeoDataCoordinates flatPosition = point;
flatPosition.setAltitude( 0.0 );
foreach( const GeoDataLinearRing & box, m_tiles ) {
if ( box.contains( flatPosition ) ) {
return true;
}
}
return false;
}
示例4: setCurrentIndex
void
MapScreen::perform_search(QString term, qreal distance)
{
GeoDataLatLonBox box;
GeoDataCoordinates location;
setCurrentIndex(indexOf(results_screen));
last_search_term = term;
last_search_distance = distance;
if (distance > MAX_DISTANCE) {
search_manager->findPlacemarks(term);
return;
}
location = navigation_screen->map_widget->focusPoint();
box.setNorth(location.latitude() - km_to_rad(distance));
box.setSouth(location.latitude() + km_to_rad(distance));
box.setEast(location.longitude() - km_to_rad(distance));
box.setWest(location.longitude() + km_to_rad(distance));
qDebug() << "Box north:" << box.north(GeoDataCoordinates::Degree);
qDebug() << "Box south:" << box.south(GeoDataCoordinates::Degree);
qDebug() << "Box west:" << box.west(GeoDataCoordinates::Degree);
qDebug() << "Box east:" << box.east(GeoDataCoordinates::Degree);
search_manager->findPlacemarks(term, box);
}
示例5: parseKml
void TestGeoDataTrack::removeAfterTest()
{
GeoDataDocument* dataDocument = parseKml( simpleExampleContent );
GeoDataFolder *folder = dataDocument->folderList().at( 0 );
QCOMPARE( folder->placemarkList().size(), 1 );
GeoDataPlacemark* placemark = folder->placemarkList().at( 0 );
QCOMPARE( placemark->geometry()->geometryId(), GeoDataTrackId );
GeoDataTrack* track = static_cast<GeoDataTrack*>( placemark->geometry() );
QCOMPARE( track->size(), 7 );
track->removeAfter( QDateTime( QDate( 2010, 5, 28 ), QTime( 2, 2, 54 ), Qt::UTC ) );
QCOMPARE( track->size(), 5 );
{
QDateTime when = track->whenList().at( 0 );
QCOMPARE( when, QDateTime( QDate( 2010, 5, 28 ), QTime( 2, 2, 9 ), Qt::UTC ) );
}
{
QDateTime when = track->whenList().at( 4 );
QCOMPARE( when, QDateTime( QDate( 2010, 5, 28 ), QTime( 2, 2, 54 ), Qt::UTC ) );
}
{
GeoDataCoordinates coord = track->coordinatesList().at( 0 );
QCOMPARE( coord.longitude( GeoDataCoordinates::Degree ), -122.207881 );
QCOMPARE( coord.latitude( GeoDataCoordinates::Degree ), 37.371915 );
QCOMPARE( coord.altitude(), 156.000000 );
}
delete dataDocument;
}
示例6: bearing
qreal OsmDatabase::bearing( const GeoDataCoordinates &a, const GeoDataCoordinates &b ) const
{
qreal delta = b.longitude() - a.longitude();
qreal lat1 = a.latitude();
qreal lat2 = b.latitude();
return fmod( atan2( sin ( delta ) * cos ( lat2 ),
cos( lat1 ) * sin( lat2 ) - sin( lat1 ) * cos( lat2 ) * cos ( delta ) ), 2 * M_PI );
}
示例7: GeoDataCoordinates
GeoDataCoordinates MyPaintLayer::approximate(const GeoDataCoordinates &base, qreal angle, qreal dist) const
{
// This is just a rough estimation that ignores projections.
// It only works for short distances. Don't use in real code.
GeoDataCoordinates::Unit deg = GeoDataCoordinates::Degree;
return GeoDataCoordinates ( base.longitude(deg) + 1.5 * dist * sin(angle),
base.latitude(deg) + dist * cos(angle), 0.0, deg);
}
示例8: asin
GeoDataCoordinates AlternativeRoutesModelPrivate::coordinates( const GeoDataCoordinates &start, qreal distance, qreal bearing )
{
qreal lat1 = start.latitude();
qreal lon1 = start.longitude();
qreal lat2 = asin( sin( lat1 ) * cos( distance ) + cos( lat1 ) * sin( distance ) * cos( bearing ) );
qreal lon2 = lon1 + atan2( sin( bearing ) * sin( distance ) * cos( lat1 ), cos( distance ) - sin( lat1 ) * sin( lat2 ) );
return GeoDataCoordinates( lon2, lat2 );
}
示例9: bearing
qreal AlternativeRoutesModelPrivate::bearing( const GeoDataCoordinates &one, const GeoDataCoordinates &two )
{
qreal delta = two.longitude() - one.longitude();
qreal lat1 = one.latitude();
qreal lat2 = two.latitude();
return fmod( atan2( sin ( delta ) * cos ( lat2 ),
cos( lat1 ) * sin( lat2 ) - sin( lat1 ) * cos( lat2 ) * cos ( delta ) ), 2 * M_PI );
}
示例10: receiveGpsCoordinates
void CurrentLocationWidgetPrivate::receiveGpsCoordinates( const GeoDataCoordinates &position, qreal speed )
{
m_currentPosition = position;
QString unitString;
QString altitudeUnitString;
QString distanceUnitString;
qreal unitSpeed = 0.0;
qreal altitude = 0.0;
qreal length = m_widget->model()->positionTracking()->length( m_widget->model()->planetRadius() );
QString html = "<html><body>";
html += "<table cellspacing=\"2\" cellpadding=\"2\">";
html += "<tr><td>Longitude</td><td><a href=\"http://edu.kde.org/marble\">%1</a></td></tr>";
html += "<tr><td>Latitude</td><td><a href=\"http://edu.kde.org/marble\">%2</a></td></tr>";
html += "<tr><td>Altitude</td><td>%3</td></tr>";
html += "<tr><td>Speed</td><td>%4</td></tr>";
html += "<tr><td>Distance</td><td>%5</td></tr>";
html += "</table>";
html += "</body></html>";
switch ( MarbleGlobal::getInstance()->locale()->measurementSystem() ) {
case QLocale::MetricSystem:
//kilometers per hour
unitString = QObject::tr("km/h");
unitSpeed = speed * HOUR2SEC * METER2KM;
altitudeUnitString = QObject::tr("m");
distanceUnitString = QObject::tr("m");
if ( length > 1000.0 ) {
length /= 1000.0;
distanceUnitString = QObject::tr("km");
}
altitude = position.altitude();
break;
case QLocale::ImperialSystem:
//miles per hour
unitString = QObject::tr("m/h");
unitSpeed = speed * HOUR2SEC * METER2KM * KM2MI;
altitudeUnitString = QObject::tr("ft");
distanceUnitString = QObject::tr("ft");
altitude = position.altitude() * M2FT;
length *= M2FT;
break;
}
// TODO read this value from the incoming signal
const QString speedString = QLocale::system().toString( unitSpeed, 'f', 1);
const QString altitudeString = QString( "%1 %2" ).arg( altitude, 0, 'f', 1, QChar(' ') ).arg( altitudeUnitString );
const QString distanceString = QString( "%1 %2" ).arg( length, 0, 'f', 1, QChar(' ') ).arg( distanceUnitString );
html = html.arg( position.lonToString() ).arg( position.latToString() );
html = html.arg( altitudeString ).arg( speedString + ' ' + unitString );
html = html.arg( distanceString );
m_currentLocationUi.locationLabel->setText( html );
m_currentLocationUi.showTrackCheckBox->setEnabled( true );
m_currentLocationUi.saveTrackButton->setEnabled( true );
m_currentLocationUi.clearTrackButton->setEnabled( true );
}
示例11: contains
bool GeoDataLatLonAltBox::contains( const GeoDataCoordinates &point ) const
{
if ( !GeoDataLatLonBox::contains( point ) )
return false;
if ( point.altitude() < d->m_minAltitude || point.altitude() > d->m_maxAltitude ) {
return false;
}
return true;
}
示例12: mapCenterOn
void TourWidgetPrivate::mapCenterOn( const QModelIndex &index )
{
QVariant coordinatesVariant = m_widget->model()->treeModel()->data( index, MarblePlacemarkModel::CoordinateRole );
if ( !coordinatesVariant.isNull() ) {
GeoDataCoordinates const coordinates = coordinatesVariant.value<GeoDataCoordinates>();
GeoDataLookAt lookat;
lookat.setCoordinates( coordinates );
lookat.setRange( coordinates.altitude() );
m_widget->flyTo( lookat, Instant );
}
}
示例13: GeoDataLatLonBox
GeoDataLatLonAltBox::GeoDataLatLonAltBox( const GeoDataCoordinates & coordinates )
: GeoDataLatLonBox(),
d( new GeoDataLatLonAltBoxPrivate )
{
setWest( coordinates.longitude() );
setEast( coordinates.longitude() );
setNorth( coordinates.latitude() );
setSouth( coordinates.latitude() );
d->m_minAltitude = coordinates.altitude();
d->m_maxAltitude = coordinates.altitude();
}
示例14: resolves
bool ViewportParams::resolves ( const GeoDataCoordinates &coord1,
const GeoDataCoordinates &coord2 ) const
{
qreal lon1, lat1;
coord1.geoCoordinates( lon1, lat1 );
qreal lon2, lat2;
coord2.geoCoordinates( lon2, lat2 );
// We take the manhattan length as an approximation for the distance
return ( fabs( lon2 - lon1 ) + fabs( lat2 - lat1 ) < angularResolution() );
}
示例15: renderRequest
void RoutingLayerPrivate::renderRequest( GeoPainter *painter )
{
m_regions.clear();
for ( int i = 0; i < m_routeRequest->size(); ++i ) {
const GeoDataCoordinates pos = m_routeRequest->at( i );
if ( pos.isValid() ) {
QPixmap pixmap = m_routeRequest->pixmap( i );
painter->drawPixmap( pos, pixmap );
QRegion region = painter->regionFromRect( pos, pixmap.width(), pixmap.height() );
m_regions.push_front( RequestRegion( i, region ) );
}
}
}