【问题标题】:Display polygon kml file using geoxml3使用 geoxml3 显示多边形 kml 文件
【发布时间】:2013-02-28 10:20:28
【问题描述】:

我正在使用 geoxml3 以便能够解析 kml 层数。现在由于某种原因,它仅适用于点而不适用于多边形 kml 文件。以下是我正在使用的代码;

function displayKml() {
        geo = new geoXML3.parser({
            map: map,
            zoom: false,
            singleInfoWindow: true,
            infoWindowOptions: { maxWidth: 100 },
            processStyles: true,
            markerOptions: { shadow: '' }
        });
        geo.parse("Resources/" + document.getElementById('<%= text2.ClientID %>').value);
    }

followinh 是来自多边形 kml 文件的 sn-p;

<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document><Folder><name>polygon_road</name>
<Schema name="polygon_road" id="polygon_road">
    <SimpleField name="Name" type="string"></SimpleField>
    <SimpleField name="Description" type="string"></SimpleField>
    <SimpleField name="id" type="int"></SimpleField>
    <SimpleField name="road_id" type="int"></SimpleField>
</Schema>
  <Placemark>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#polygon_road">
        <SimpleData name="id">1</SimpleData>
        <SimpleData name="road_id">8</SimpleData>
    </SchemaData></ExtendedData>
      <Polygon><outerBoundaryIs><LinearRing><coordinates>14.517292705321212,35.901268542738997 14.517607913551563,35.901660659810574 14.517685853364705,35.901598006913375 14.517365353364706,35.901199306913377 14.517359591135264,35.901193253552186 14.517352901130216,35.901188244530104 14.508563647353409,35.895689849334943 14.508510612009246,35.895774626998687 14.517292705321212,35.901268542738997</coordinates></LinearRing></outerBoundaryIs></Polygon>
  </Placemark>
  <Placemark>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#polygon_road">
        <SimpleData name="id">2</SimpleData>
        <SimpleData name="road_id">10</SimpleData>
    </SchemaData></ExtendedData>
      <Polygon><outerBoundaryIs><LinearRing><coordinates>14.518412050213227,35.900771848093811 14.518465407563996,35.900687272724355 14.510931707563996,35.895934372724355 14.510878350213227,35.896018948093811 14.518412050213227,35.900771848093811</coordinates></LinearRing></outerBoundaryIs></Polygon>
  </Placemark>
  <Placemark>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#polygon_road">
        <SimpleData name="id">3</SimpleData>
        <SimpleData name="road_id">12</SimpleData>
    </SchemaData></ExtendedData>
      <Polygon><outerBoundaryIs><LinearRing><coordinates>14.515100381551473,35.90111915074295 14.515153218448528,35.901034249257044 14.509212818448528,35.89733734925705 14.509159981551473,35.897422250742956 14.515100381551473,35.90111915074295</coordinates></LinearRing></outerBoundaryIs></Polygon>
  </Placemark>

【问题讨论】:

  • 您使用的是什么版本的geoxml3?多边形仅在 polykmz 分支中受支持。如果您没有使用 geoxml3 的主干版本并且点(标记)有效,但多边形无效,则您的 KML 可能有问题,而不是您加载它的方式。您能否提供显示问题的 KML(不一定是您的真实文件)。
  • 是否有支持所有三种类型对象(点、线和多边形)的geoxml3 版本? @geocodezip
  • 是的。 polys 和 kmz 分支都支持这些。如果您不需要 zip 压缩(支持 kmz 文件),请使用 polys 分支中的版本,这是最新最好的。你在哪里使用后备箱?
  • 是的,我想我使用的是中继线。我会试试聚的。

标签: javascript google-maps-api-3 xml-parsing kml geospatial


【解决方案1】:

不要使用geoxml3 的主干版本,它相当旧,只支持标记。 polyskmz 分支都支持多边形、折线和标记。如果您不需要 zip 压缩(kmz 文件支持),请使用 polys 分支。如果您在 KML 中需要更多符合标准的支持,kmz 分支可以更好地支持文档化标准,但未针对非 kmz 文件进行良好测试。

(来自geoxml3 project page

历史

主干 - (旧的,当前未维护)原始版本 network_link 分支 - (旧的,当前未维护)网络链接功能的开发分支,未经过良好测试 polys 分支 - 折线、多边形的开发分支,当前活跃的开发分支。支持折线、多边形、标记和groundoverlays kmz 分支 - 用于 kmz 支持的开发分支,建立在 polys 分支之上。支持外部样式,并且更符合标准。有关详细信息 (http://code.google.com/p/geoxml3/issues/detail?id=53) 和当前状态,请参见问题 53。

您的 KML 缺少 &lt;LineStyle&gt;&lt;width&gt; 属性,因此多边形的边界没有宽度(因此您看不到它们)。 kmz 分支有一组更好的默认值。如果我添加宽度,您可以看到它们:

http://www.geocodezip.com/geoxml3_test/v3_geoxml3_kmltest_linktoB.html?filename=http://www.geocodezip.com/geoxml3_test/SO_IT_info_kmlA.xml

【讨论】:

  • 仍然不适用于多边形。我下载了 kmz 版本,但仍然只适用于积分。 @geocodezip
  • 然后我们回到“您能否提供显示问题的 KML(它不必是您的真实文件)”。如果点有效,但多边形无效,我怀疑您的 KML(可能是多边形的样式)。
  • 是的。够了,我可以看到你所看到的。
  • 您希望多边形看起来像什么?我认为I see what you are seeing,在这种情况下它看起来像kmz version works better
  • 我也没有看到 polys 分支的线条。我将对此进行调查,这可能是该特定示例的问题,也可能是库本身的问题。 kmz 版本看起来很合理,线条比应有的要窄一些。
猜你喜欢
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2013-01-06
  • 2012-07-11
相关资源
最近更新 更多