2012-03-22 10 views
0

parseKml()関数がKMLファイルを正しく解析しないことに気付きました。たとえば、あなたがKMLのこのビットがある場合:parseKml()error

<ExtendedData> 
    <Data name="Offer"> 
    <value>Apples</value> 
    <value>Potatoes</value> 
    <value>Tomatoes</value> 
    </Data> 
</ExtendedData> 

をparseKml()関数は、すなわち「トマト」、唯一の最後の値が含まれますことkmlObjectを返します。

誰のためのソリューションを持っていますこの?

答えて

0

私は、<value>を1つだけ含むことができると信じています。ドキュメントによれば、 "<Data>"要素は、指定されたフィーチャに関連付けられたユーザデータにタイプのない名前/値のペアを追加できます。

あなたのケースでは、それは最後の<value>要素のみを取り上げています。 https://developers.google.com/kml/documentation/extendeddata

1

使用している拡張データの種類の構造は、名前と値のペアのための構造です。単一の値を持つ単一の名前です。

<ExtendedData>      
    <Data name="string"> 
    <displayName>...</displayName> <!-- string --> 
    <value>...</value>    <!-- string --> 
    </Data> 
</ExtendedData> 

だからあなたがしようとしているものは動作しません。任意のXMLデータ構造をKMLフィーチャに追加する場合は、このようにします。

<ExtendedData xmlns:offer="http://yourserver.com/namespace"> 
    <offer:item>Apples</offer:item> 
    <offer:item>Potatoes</offer:item> 
    <offer:item>Tomatoes</offer:item> 
</ExtendedData> 

データ構造に基づいて、 'オファー' XMLスキーマファイル(http://yourserver.com/namespace)は次のようなものになります。

<?xml version="1.0" encoding="utf-16"?> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="item" type="xsd:string" /> 
</xsd:schema>