KML 文件和自定义类

KML file and custom classes?

本文关键字:自定义 文件 KML      更新时间:2023-09-26

我有这个 kml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Placemark>
      <name>CDATA example</name>
      <description>
        <![CDATA[
          <h1>CDATA Tags are useful!</h1>
          <p><font color="red">Text is <i>more readable</i> and 
          <b>easier to write</b> when you can avoid using entity 
          references.</font></p>
        ]]>
      </description>
      <Point>
        <coordinates>102.595626,14.996729</coordinates>
      </Point>
    </Placemark>
  </Document>
</kml>

(示例取自谷歌地图文档)当我将类添加到 KML 内部的 href 时:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <Placemark>
      <name>CDATA example</name>
      <description>
        <![CDATA[
          <h1>CDATA Tags are useful!</h1>
          <p><font color="red">Text is <i>more readable</i> and 
          <b>easier to write</b> when you can avoid using entity 
          references.<a class="read_more" href="http://google.com">Read More</a></font></p>
        ]]>
      </description>
      <Point>
        <coordinates>102.595626,14.996729</coordinates>
      </Point>
    </Placemark>
  </Document>
</kml>

KMl 只是剥离它,我猜这是由于"内容清理"https://developers.google.com/earth/documentation/balloons

这是我当前的JavaScript:

jQuery(document).ready(function($) {    
        function initialize() {
        var myLatlng = new google.maps.LatLng(51.201465,-0.30244);
          var mapOptions = {
            zoom: 12,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          };
          var map = new google.maps.Map(document.getElementById('map-canvas'),
              mapOptions);
          var kmlLayer = new google.maps.KmlLayer({
            url: 'http://*****.com/new/wp-content/themes/required-starter/KML_Samples.kml?rand='+(new Date()).valueOf(),
            suppressInfoWindows: false,
            map: map
          });
          google.maps.event.addListener(kmlLayer, 'click', function(kmlEvent) {
            var text = kmlEvent.featureData.description;
           alert(text);
          });
        }
        google.maps.event.addDomListener(window, 'load', initialize);
});

我找不到正确的参数来停止数据清理,也找不到 kml 文档中将类添加到描述包装器或气泡的选项。我想这是由于我的无能,请帮忙!克里斯

我认为

您无法避免我所知道的任何方式清理数据。但是您可以采取行动并控制数据。比如,首先一些风格:

<style type="text/css">
.foo .read_more {
    font-family: papyrus, parade;
}
.foo h1,p{
    margin:0;
    padding:0;
}
</style>

然后制作你自己的(好吧,好吧,这是谷歌的)信息窗口:

    function initialize() {
    var myLatlng = new google.maps.LatLng(51.201465,-0.30244);
      var mapOptions = {
        zoom: 4,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      var map = new google.maps.Map(document.getElementById('map-canvas'),
          mapOptions);
      var kmlLayer = new google.maps.KmlLayer({
        url: 'SomeKmlFile.kml',
        suppressInfoWindows: true,
        map: map
      });
      var infoWindow = new google.maps.InfoWindow({pixelOffset: new google.maps.Size(0, -32)});
      var div = document.createElement('div');
      google.maps.event.addListener(kmlLayer, 'click', function(kmlEvent) {
        var text = kmlEvent.featureData.description;
        div.innerHTML = text;
        div.className = 'foo';
        div.getElementsByTagName('a')[0].className = 'read_more';
        infoWindow.setPosition(kmlEvent.latLng);
        infoWindow.setContent(div);
        infoWindow.open(map);
      });
    }
    google.maps.event.addDomListener(window, 'load', initialize);