StyleMapPtr KmlExport::createWallAxesStyle() { StyleMapPtr styleMap = factory->CreateStyleMap(); { // Add custom balloon style (gets rid of "Directions to here...") // https://groups.google.com/forum/?fromgroups#!topic/kml-support-getting-started/2CqF9oiynRY BalloonStylePtr balloonStyle = factory->CreateBalloonStyle(); balloonStyle->set_text("$[id]"); // Create an icon style IconStylePtr iconStyle = factory->CreateIconStyle(); iconStyle->set_scale(0); // Create a label style LabelStylePtr labelStyle = factory->CreateLabelStyle(); labelStyle->set_color(kmlbase::Color32(255, 0, 255, 255)); labelStyle->set_scale(0); // Create a line style LineStylePtr lineStyle = factory->CreateLineStyle(); lineStyle->set_color(kmlbase::Color32(255, 0, 0, 0)); // Black lineStyle->set_width(.9); // Link the style to the icon StylePtr style = factory->CreateStyle(); style->set_balloonstyle(balloonStyle); style->set_iconstyle(iconStyle); style->set_linestyle(lineStyle); style->set_labelstyle(labelStyle); PairPtr pair = factory->CreatePair(); pair->set_styleselector(style); pair->set_key(kmldom::STYLESTATE_NORMAL); styleMap->add_pair(pair); } { // Add custom balloon style (gets rid of "Directions to here...") // https://groups.google.com/forum/?fromgroups#!topic/kml-support-getting-started/2CqF9oiynRY BalloonStylePtr balloonStyle = factory->CreateBalloonStyle(); balloonStyle->set_text("$[id]"); // Create an icon style IconStylePtr iconStyle = factory->CreateIconStyle(); iconStyle->set_scale(0); // Create a label style LabelStylePtr labelStyle = factory->CreateLabelStyle(); labelStyle->set_color(kmlbase::Color32(255, 0, 255, 255)); labelStyle->set_scale(0.75); // Create a line style LineStylePtr lineStyle = factory->CreateLineStyle(); lineStyle->set_color(kmlbase::Color32(255, 0, 0, 0)); // Black lineStyle->set_width(1.8); // Link the style to the icon StylePtr style = factory->CreateStyle(); style->set_balloonstyle(balloonStyle); style->set_iconstyle(iconStyle); style->set_linestyle(lineStyle); style->set_labelstyle(labelStyle); PairPtr pair = factory->CreatePair(); pair->set_styleselector(style); pair->set_key(kmldom::STYLESTATE_HIGHLIGHT); styleMap->add_pair(pair); } styleMap->set_id("ts_1_tb"); return styleMap; }
/** * @brief KmlExport::CreateLineStringPlacemark Adds a line segment which is colored according to the * vehicle's speed. * @param startPoint Beginning point along line * @param endPoint End point point along line * @return Returns the placemark containing the line segment */ PlacemarkPtr KmlExport::CreateLineStringPlacemark(const LLAVCoordinates &startPoint, const LLAVCoordinates &endPoint, quint32 newPlacemarkTime) { CoordinatesPtr coordinates = factory->CreateCoordinates(); coordinates->add_latlngalt(startPoint.latitude, startPoint.longitude, startPoint.altitude); coordinates->add_latlngalt(endPoint.latitude, endPoint.longitude, endPoint.altitude); LineStringPtr linestring = factory->CreateLineString(); linestring->set_extrude(true); // Extrude to ground linestring->set_altitudemode(kmldom::ALTITUDEMODE_ABSOLUTE); linestring->set_coordinates(coordinates); StyleMapPtr styleMap = factory->CreateStyleMap(); // Add custom balloon style (gets rid of "Directions to here...") // https://groups.google.com/forum/?fromgroups#!topic/kml-support-getting-started/2CqF9oiynRY BalloonStylePtr balloonStyle = factory->CreateBalloonStyle(); balloonStyle->set_text("$[description]"); { double currentVelocity = (startPoint.groundspeed + endPoint.groundspeed)/2; // Set the linestyle. The color is a function of speed. LineStylePtr lineStyle = factory->CreateLineStyle(); lineStyle->set_color(mapVelocity2Color(currentVelocity)); PolyStylePtr polyStyle = factory->CreatePolyStyle(); polyStyle->set_color(mapVelocity2Color(currentVelocity, 100)); // Link the style to the icon StylePtr style = factory->CreateStyle(); style->set_balloonstyle(balloonStyle); style->set_linestyle(lineStyle); style->set_polystyle(polyStyle); PairPtr pair = factory->CreatePair(); pair->set_styleselector(style); pair->set_key(kmldom::STYLESTATE_NORMAL); styleMap->add_pair(pair); } { double currentVelocity = (startPoint.groundspeed + endPoint.groundspeed)/2; // Set the linestyle. The color is a function of speed. LineStylePtr lineStyle = factory->CreateLineStyle(); lineStyle->set_color(mapVelocity2Color(currentVelocity)); PolyStylePtr polyStyle = factory->CreatePolyStyle(); polyStyle->set_color(mapVelocity2Color(currentVelocity, 100)); polyStyle->set_fill(false); // Link the style to the icon StylePtr style = factory->CreateStyle(); style->set_balloonstyle(balloonStyle); style->set_linestyle(lineStyle); style->set_polystyle(polyStyle); PairPtr pair = factory->CreatePair(); pair->set_styleselector(style); pair->set_key(kmldom::STYLESTATE_HIGHLIGHT); styleMap->add_pair(pair); } PlacemarkPtr placemark = factory->CreatePlacemark(); placemark->set_geometry(linestring); placemark->set_styleselector(styleMap); placemark->set_visibility(true); // Create the timespan TimeSpanPtr timeSpan = factory->CreateTimeSpan(); QDateTime startTime = QDateTime::currentDateTimeUtc().addMSecs(newPlacemarkTime); // FIXME: Make this a function of the true time, preferably gotten from the GPS QDateTime endTime = QDateTime::currentDateTimeUtc().addMSecs(newPlacemarkTime); timeSpan->set_begin(startTime.toString(dateTimeFormat).toStdString()); timeSpan->set_end(endTime.toString(dateTimeFormat).toStdString()); // Set the name QDateTime trackTime = QDateTime::currentDateTimeUtc().addMSecs(newPlacemarkTime); // FIXME: Make it a function of the realtime preferably gotten from the GPS placemark->set_name(trackTime.toString(dateTimeFormat).toStdString()); // Add a nice description to the track placemark placemark->set_description(informationString.toStdString()); // Set the timespan placemark->set_timeprimitive(timeSpan); return placemark; }
/** * @brief KmlExport::createCustomBalloonStyle Creates a custom balloon stye, using an arrow as an icon. * @return Returns the custom balloon style. */ StyleMapPtr KmlExport::createCustomBalloonStyle() { StyleMapPtr styleMap = factory->CreateStyleMap(); { // Add custom balloon style (gets rid of "Directions to here...") // https://groups.google.com/forum/?fromgroups#!topic/kml-support-getting-started/2CqF9oiynRY BalloonStylePtr balloonStyle = factory->CreateBalloonStyle(); balloonStyle->set_text("$[description]"); // Change the icon IconStyleIconPtr iconStyleIcon = factory->CreateIconStyleIcon(); iconStyleIcon->set_href("http://maps.google.com/mapfiles/kml/shapes/arrow.png"); // Create a label style LabelStylePtr labelStyle = factory->CreateLabelStyle(); labelStyle->set_color(kmlbase::Color32(255, 0, 255, 255)); labelStyle->set_scale(0.75); // Create an icon style IconStylePtr iconStyle = factory->CreateIconStyle(); iconStyle->set_icon(iconStyleIcon); iconStyle->set_scale(0.65); // Create a line style LineStylePtr lineStyle = factory->CreateLineStyle(); lineStyle->set_width(3.25); // Link the style to the icon StylePtr style = factory->CreateStyle(); style->set_balloonstyle(balloonStyle); style->set_iconstyle(iconStyle); style->set_linestyle(lineStyle); style->set_labelstyle(labelStyle); PairPtr pair = factory->CreatePair(); pair->set_styleselector(style); pair->set_key(kmldom::STYLESTATE_NORMAL); styleMap->add_pair(pair); } { // Add custom balloon style (gets rid of "Directions to here...") // https://groups.google.com/forum/?fromgroups#!topic/kml-support-getting-started/2CqF9oiynRY BalloonStylePtr balloonStyle = factory->CreateBalloonStyle(); balloonStyle->set_text("$[description]"); // Change the icon IconStyleIconPtr iconStyleIcon = factory->CreateIconStyleIcon(); iconStyleIcon->set_href("http://maps.google.com/mapfiles/kml/shapes/arrow.png"); // Create an icon style IconStylePtr iconStyle = factory->CreateIconStyle(); iconStyle->set_icon(iconStyleIcon); iconStyle->set_scale(0.65); // Create a label style LabelStylePtr labelStyle = factory->CreateLabelStyle(); labelStyle->set_color(kmlbase::Color32(255, 0, 255, 255)); labelStyle->set_scale(0.9); // Create a line style LineStylePtr lineStyle = factory->CreateLineStyle(); lineStyle->set_width(6.5); // Link the style to the icon StylePtr style = factory->CreateStyle(); style->set_balloonstyle(balloonStyle); style->set_iconstyle(iconStyle); style->set_linestyle(lineStyle); style->set_labelstyle(labelStyle); PairPtr pair = factory->CreatePair(); pair->set_styleselector(style); pair->set_key(kmldom::STYLESTATE_HIGHLIGHT); styleMap->add_pair(pair); } styleMap->set_id("directiveArrowStyle"); return styleMap; }