2

Google Earthで使用するKMLファイルでは、URLにパーセントエンコード文字が含まれているGoogleChartsの動的アイコンを使用しています。ネットワーク呼び出しを傍受することでわかるように、%E2%80%A2(箇条書き文字)はGoogle Earthによって%C3%A2%C2%80%C2%A2にマングルされ、アイコンの取得が失敗します。問題は、KML仕様が非常にあいまいであるということです。IconStyleIconhref要素については、「アイコンの読み込みに使用されるHTTPアドレス[...]」としか表示されません。では、Google Earthが何を期待しているのか、パーセントエンコードされた文字を使用してKMLファイルのアイコンURLを正しく機能させる方法をGoogle社員が明確にできるでしょうか。

上記のURLがどういうわけか間違っているのではないかと心配しないでください。ブラウザでは正常に動作し(アンパサンドに置き換えた後)、動的アイコンの開発者向けリファレンスのほぼ半分に似た例があります。

実際の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>
4

1 に答える 1

1

私は長い落ち着きの後にこれに戻ってきて、答えを見つけました。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>

振り返ってみると、「」が必要であるという事実 アンパサンドは私を正しい軌道に乗せたはずですが、後知恵は常に20/20です...

于 2013-06-02T06:28:58.453 に答える