Мне нужно ввести координаты из файла c ++ в файл KML для запуска с Google Планета Земля, как бы вы это сделали? Файл KML:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"xmlns:gx="http://www.google.com/kml/ext/2.2"xmlns:kml="http://www.opengis.net/kml/2.2"xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>Path.kml</name>
<Style id="pathstyle">
<LineStyle>
<color>ff190cff</color>
<width>2</width>
</LineStyle>
</Style>
<Placemark>
<name>Path</name>
<description>This is the path between the 2 points</description>
<styleUrl>#pathstyle</styleUrl>
<LineString>
<tessellate>1</tessellate>
<coordinates>
long1,lat1,0
long2,lat2,0
</coordinates>
</LineString>
</Placemark>
Как бы я ввел данные из файла c ++, когда в него введены широта и долгота? Они объявлены как двойные поплавки
Вот стратегия, которую я успешно использовал: создайте серию функций для постепенного создания вашего KML / XML. Например, вот функция для сериализации Placemark
часть вашего KML:
(Также см. живое демо.)
#include <fstream>
#include <sstream>
#include <string>
std::string FormatPlacemark(double lat1, double long1, double lat2, double long2)
{
std::ostringstream ss;
ss << "<Placemark>\n"<< "<name>Path</name>\n"<< "<description>This is the path between the 2 points</description>\n"<< "<styleUrl>#pathstyle</styleUrl>\n"<< "<LineString>\n"<< "<tessellate>1</tessellate>\n"<< "<coordinates>"<< long1 << "," << lat1 << ",0"<< " "<< long2 << "," << lat2 << ",0"<< "</coordinates>\n"<< "</LineString>\n"<< "</Placemark>\n";
return ss.str();
}
А вот как создать / открыть файл KML и записать в него:
std::ofstream handle;
// http://www.cplusplus.com/reference/ios/ios/exceptions/
// Throw an exception on failure to open the file or on a write error.
handle.exceptions(std::ofstream::failbit | std::ofstream::badbit);
// Open the KML file for writing:
handle.open("C:/Output/Sample.kml");
// Write to the KML file:
handle << "<?xml version='1.0' encoding='utf-8'?>\n";
handle << "<kml xmlns='http://www.opengis.net/kml/2.2'>\n";
handle << FormatPlacemark(-76.2, 38.5, -76.1, 38.6);
handle << "</kml>\n";
handle.close();
Других решений пока нет …