百分比编码的网址受到Google地球的破坏

时间:2012-05-14 11:35:04

标签: url kml google-earth

在Google地球消费的KML文件中,我使用Google Charts动态图标,其网址包含百分比编码字符,例如this one。通过拦截网络呼叫可以看出,%E2%80%A2(项目符号字符)被Google Earth损坏为%C3%A2%C2%80%C2%A2,这导致图标检索失败。问题是KML规范非常模糊:在IconStyle Icon href元素中,它只会说它是“用于加载图标的HTTP地址”。那么,任何Google员工都可以澄清Google地球所期望的内容以及如何使用百分比编码字符在KML文件中制作图标网址吗?

请不要因为上面的URL在某种程度上不正确而感到悲伤:它在浏览器中工作正常(用&符替换之后)并且有一个例子就像它在{中途的一半' {3}}

实际的KML示例文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
  <Folder>
    <Placemark>
      <Style>
        <IconStyle>
          <scale>1.6</scale>
          <Icon>
            <!-- doesn't work -->
            <href>http://chart.apis.google.com/chart?chst=d_map_pin_letter_withshadow&#x26;chld=%E2%80%A2|cccccc|000000</href>
          </Icon>
        </IconStyle>
      </Style>
      <Point>
        <coordinates>-3.67,40.51</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <Style>
        <IconStyle>
          <scale>1.6</scale>
          <Icon>
            <!-- works -->
            <href>http://chart.apis.google.com/chart?chst=d_map_pin_letter_withshadow&#x26;chld=O|cccccc|000000</href>
          </Icon>
        </IconStyle>
      </Style>
      <Point>
        <coordinates>-3.68,40.52</coordinates>
      </Point>
    </Placemark>
  </Folder>
</Document>
</kml>

1 个答案:

答案 0 :(得分:0)

经过长时间的平静后,我回到了这里,找到了答案。即使您正在插入URL,因此应该应用URL编码指南KML期望特殊实体是Unicode,而不是URL编码,即使在URL中也是如此!换句话说,你需要这个:

<href>http://chart.apis.google.com/chart?chst=d_map_pin_letter_withshadow&#x26;chld=&#x2022;|cccccc|000000</href>

回想起它需要“&amp;#26;”对于&符应该让我走上正确的轨道,但后见之明总是20/20 ......