void ControlView::openGeoUri( const QString& geoUriString ) { GeoUriParser uriParser( geoUriString ); if ( uriParser.parse() ) { if ( uriParser.planet().id() != marbleModel()->planet()->id() ) { MapThemeManager *manager = mapThemeManager(); foreach( const QString& planetName, manager->mapThemeIds()) { if ( planetName.startsWith(uriParser.planet().id(), Qt::CaseInsensitive)) { m_marbleWidget->setMapThemeId(planetName); break; } } } m_marbleWidget->centerOn( uriParser.coordinates() ); if ( uriParser.coordinates().altitude() > 0.0 ) { m_marbleWidget->setDistance( uriParser.coordinates().altitude() * METER2KM ); } }
void GeoUriRunner::search(const QString &searchTerm, const GeoDataLatLonBox &) { QVector<GeoDataPlacemark*> vector; GeoUriParser uriParser(searchTerm); const bool success = uriParser.parse(); if (success && (uriParser.planet().id() == model()->planet()->id())) { const GeoDataCoordinates coordinates = uriParser.coordinates(); GeoDataPlacemark *placemark = new GeoDataPlacemark; placemark->setName(searchTerm); placemark->setCoordinate(coordinates); placemark->setVisualCategory(GeoDataPlacemark::Coordinate); placemark->setPopularity(1000000000); placemark->setZoomLevel(1); vector.append(placemark); } emit searchFinished(vector); }