Я замечаю определенное поведение при использовании ExtendedData в KML, которое, как мне кажется, ставит под сомнение использование ExtendedData, особенно если дорожка пересекает себя.
Я хотел бы знать, есть ли исправление или обходной путь?
GoogleEarth (v7.3.2.5491 (32-разрядная версия)), по-видимому, выполняет вычисления на лету, чтобы вычислить ближайшую путевую точку к нажатой точке. Это проблема, если ближайшая путевая точка на расстоянии по прямой линии находится дальше по дорожке, принимая во внимание время. У меня есть MRE здесь ...
<kml xmlns="http://earth.google.com/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document xmlns="http://earth.google.com/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<name>2018-08-27_Mon</name>
<Schema id="schema">
<gx:SimpleArrayField name="gps_coords" type="string">
<displayName>GPS Coords</displayName>
</gx:SimpleArrayField>
<gx:SimpleArrayField name="ping_time" type="string">
<displayName>Ping Time</displayName>
</gx:SimpleArrayField>
</Schema>
<Folder xmlns="http://earth.google.com/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<name>Tracks</name>
<Placemark xmlns="http://earth.google.com/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<name>Trackway</name>
<styleUrl>#my_track</styleUrl>
<gx:Track xmlns="http://earth.google.com/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<altitudeMode>clampToGround</altitudeMode>
<when>1970-01-01T05:02:28Z</when>
<when>1970-01-01T09:04:00Z</when>
<when>1970-01-01T11:06:00Z</when>
<when>1970-01-01T14:59:30Z</when>
<when>1970-01-01T15:02:00Z</when>
<when>1970-01-01T17:03:11Z</when>
<gx:coord>-8.460239 54.253286 0</gx:coord>
<gx:coord>-8.460439 54.256286 0</gx:coord>
<gx:coord>-8.460639 54.259286 0</gx:coord>
<gx:coord>-8.467867 54.262505 0</gx:coord>
<gx:coord>-8.462653 54.256286 0</gx:coord>
<gx:coord>-8.460599 54.250317 0</gx:coord>
<ExtendedData>
<SchemaData schemaUrl="#schema">
<gx:SimpleArrayData name="gps_coords">
<gx:value>No 1. 54.253286 -8.460239</gx:value>
<gx:value>No 2. 54.256286 -8.460439</gx:value>
<gx:value>No 3. 54.259286 -8.460539</gx:value>
<gx:value>No 4. 54.262505 -8.467867</gx:value>
<gx:value>No 5. 54.256286 -8.462653</gx:value>
<gx:value>No 6. 54.250317 -8.460599</gx:value>
</gx:SimpleArrayData>
<gx:SimpleArrayData name="ping_time">
<gx:value>2018-08-27T05:02:28Z</gx:value>
<gx:value>2018-08-27T09:04:00Z</gx:value>
<gx:value>2018-08-27T11:06:00Z</gx:value>
<gx:value>2018-08-27T14:59:30Z</gx:value>
<gx:value>2018-08-27T15:02:00Z</gx:value>
<gx:value>2018-08-27T17:03:11Z</gx:value>
</gx:SimpleArrayData>
</SchemaData>
</ExtendedData>
</gx:Track>
</Placemark>
</Folder>
<Folder>
<Placemark>
<TimeStamp>
<when>1970-01-01T05:02:28Z</when>
</TimeStamp>
<description>Desc No 1. 54.253286 -8.460239</description>
<styleUrl>#waypoint</styleUrl>
<Point>
<coordinates>-8.460239 54.253286 0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>1970-01-01T09:04:00Z</when>
</TimeStamp>
<description>Desc No 2. 54.256286 -8.460439</description>
<styleUrl>#waypoint</styleUrl>
<Point>
<coordinates>-8.460439 54.256286 0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>1970-01-01T11:06:00Z</when>
</TimeStamp>
<description>Desc No 3. 54.259286 -8.460539</description>
<styleUrl>#waypoint</styleUrl>
<Point>
<coordinates>-8.460639 54.259286 0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>1970-01-01T14:59:30Z</when>
</TimeStamp>
<description>Desc No 4. 54.262505 -8.467867</description>
<styleUrl>#waypoint</styleUrl>
<Point>
<coordinates>-8.467867 54.262505 0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>1970-01-01T15:02:00Z</when>
</TimeStamp>
<description>Desc No 5. 54.256286 -8.462653</description>
<styleUrl>#waypoint</styleUrl>
<Point>
<coordinates>-8.462653 54.256286 0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>1970-01-01T17:03:11Z</when>
</TimeStamp>
<description>Desc No 6. 54.250317 -8.460599</description>
<styleUrl>#waypoint</styleUrl>
<Point>
<coordinates>-8.460599 54.250317 0</coordinates>
</Point>
</Placemark>
</Folder>
</Document>
</kml>
Если щелкнуть по дорожке на полпути между № 4 и № 5, появится ExtendedData для № 3. То же самое с № 5 и № 6, что привело к открытию № 1. Это отчасти имеет смысл, потому что дорожка просто нарисована как прямая линия между двумя точками и не имеет своей собственной геометрии. Таким образом, я мог бы с этим смириться, хотя наивный пользователь мог ожидать точного всплывающего окна для промежуточных позиций. Однако если я переместу ползунок времени, чтобы исключить / исчезнуть точки № 1, № 2 и № 3, я бы ожидал, что № 1, № 2 и № 3 будут исключены из расчетов. Но это не так. Получите те же результаты, что и выше. Это не то, что я ожидал.
В этом MRE это не проблема как таковая, но на большом треке с несколькими сотнями точек и треком, пересекающим и обратно в течение дня, тогда такие всплывающие окна ExtendedData, IMO, могут использоваться.
Чтобы обойти это, я создал описание CDATA для каждой путевой точки в треке, которое является приемлемым
Есть ли обходной путь KML для такого поведения или это просто способ, которым GE его реализует? Возможно, есть еще предложения?
Ли