OpenLayers 5.3, получить СВОЙСТВА из метки слоя KML - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть карта с землетрясением информация о различных KML-слоях .

Есть подсказка , которая показывает информация о конкретном месте, если вы «зависаете» с помощью мыши.

Например.

Я наведу указатель мыши на "PUNTA CANA" ,должна быть всплывающая подсказка с:

  • ИМЯ: Пунта Кана
  • МАГНИТУТ: 2.2
  • РЕШЕНИЕ: xxx
  • ДЛИТЕЛЬНОСТЬ: ггг
  • ВРЕМЯ: дд / мм / ГГ, чч: ii

Примечание: в моем KML, как вы можете видеть, у меня есть все эти данные:

<Folder>
<Placemark id="placemark54021">
<name> Punta Cana</name>
<lat>38.89</lat>
<longitudo>15.78</longitudo>
<magnitudo>2.1</magnitudo>
<profondita>109</profondita>
<data_intera>18/01/2019</data_intera>
<orario>09:10</orario>
<styleUrl>#simbolo_last_0_1</styleUrl>
<Point>
<coordinates>15.78,38.89</coordinates>
</Point>
</Placemark>
</Folder>

Однако, если я пытаюсь получить свойства, мне удается прочитать только свойство "name" :

например,

map.on(select, function(event) {

    var feature = map.forEachFeatureAtPixel(event.pixel,
        function(feature, layer) {

        var values = feature.values_;

        var coordinate = event.coordinate;
        var hdms = ol.coordinate.toStringHDMS(ol.proj.toLonLat(coordinate));


        content.innerHTML = '<p style="font-weight: 800">'+ values.name +' - ' + '02/02/2002' + ' - ore 06:00</p>' +
                '<p><span style="font-weight: bold; color: red;">Magnitudo: 2.2</span> - ' +
                '<b>Lat:</b> 42.00 - <b>Long</b>: 32.00 - <b>Profondità</b>: 9km</p>';

        overlay.setPosition(coordinate);


        }, {
            hitTolerance: 5
        });
});

I 'm правильно читает имя свойства, используя values.name .Тем не менее, если я попробую таким же образом , чтобы прочитать другие свойства.Например: - values.lat - values.longitudo и т. Д ... это не работает!

Как я могу получить другие свойства из KML?Я что-то упустил?

Спасибо!

1 Ответ

0 голосов
/ 04 февраля 2019

Не уверен, если это связано (так как я плохо знаю openlayers), но ваша структура KML не является допустимой KML.Вы используете пользовательские теги для своих переменных данных непосредственно в KML, что не поддерживается.Если вы хотите включить такие атрибуты в свои функции KML, обычно лучше использовать раздел <ExtendedData> (с определенной схемой или без нее).Ваш KML будет выглядеть примерно так:

<kml>
  <Folder>
    <Placemark id="placemark54021">
      <name>Punta Cana</name>
      <styleUrl>#simbolo_last_0_1</styleUrl>
      <ExtendedData>
        <Data name="lat"><value>38.89</value></Data>
        <Data name="longitudo"><value>15.78</value></Data>
        <Data name="magnitudo"><value>2.1</value></Data>
        <Data name="profondita"><value>109</value></Data>
        <Data name="data_intera"><value>18/01/2019</value></Data>
        <Data name="orario"><value>09:10</value></Data>
      </ExtendedData>
      <Point>
        <coordinates>15.78,38.89</coordinates>
      </Point>
    </Placemark>
  </Folder>
</kml>
...