void MapView::addData(const QTime &time, qreal lat, qreal lon, const QStringList &metadata) { // Add marker Marker *marker = new Marker(time, lat, lon, metadata); marker->setZValue(2); markers.append(marker); qSort(markers.begin(), markers.end(), markerLessThan); geo_map->addMapObject(marker); geo_map->setCenter(marker->coordinate()); QStringList md = marker->metadata(); md.prepend(marker->time().toString()); emit markerClicked(md); // Add point to track QList<QGeoCoordinate> path; foreach (const Marker *marker, markers) path.append(marker->coordinate()); track->setPath(path); // QGeoMapPolylineObject cannot be added to map if it's empty if (!path.isEmpty() && !geo_map->mapObjects().contains(track)) geo_map->addMapObject(track); }
static void addMarkerInOrder( std::vector< Marker > & markers, const Marker & addme ) { std::vector< Marker >::iterator it = markers.begin(); while( it != markers.end() && it->time() < addme.time() ) { ++it; } markers.insert( it, addme ); }
// --------------------------------------------------------------------------- // dilate // --------------------------------------------------------------------------- //! Compute a new time for the specified Marker using //! warpTime(), exactly as Partial Breakpoint times are //! recomputed. This can be used to dilate the Markers //! corresponding to a collection of Partials. //! //! \param m is the Marker whose time should be recomputed. // void Dilator::dilate( Marker & m ) const { m.setTime( warpTime( m.time() ) ); }