地图颜色模式“随机”适用于Google地球,但不适用于Google地图

时间:2013-09-27 08:10:24

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

我正在开发一个在Google地图上显示服务器生成的KML的应用程序。我负责业务层和后端,但现在我面临着基于extjs的前端问题。我想问一个关于地标着色的KML问题,看它是否与谷歌地图或我的应用程序有关。由于我没有关于前端开发的很多细节,我会在需要时询问我的其他代码/实现细节。

我现在知道的是我们使用以下Javascript库:

我的目标是生成一个显示在Google地图上的KML,并显示一组地理区域,每个地理区域由一个多边形表示,每个地理区域随机着色。我只需要相邻的多边形不会显示相同的颜色。我发现我的Java KML库中的MapColorMode.RANDOM应该可以解决问题。

所以我根据以下片段创建了一个KML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
    <Document>
        <Style id="randomColour">
            <PolyStyle id="randomColour">
                <color>ffffffff</color>
                <colorMode>random</colorMode>
                <fill>1</fill>
                <outline>1</outline>
            </PolyStyle>
        </Style>
        <Folder>
            <styleUrl>randomColour</styleUrl>
            <Placemark>
                <name>0</name>
                <styleUrl>#randomColour</styleUrl>
                <Polygon>
                    <extrude>1</extrude>
                    <tessellate>1</tessellate>
                    <outerBoundaryIs>
                        <LinearRing>
                            <coordinates>...</coordinates>
                        </LinearRing>
                    </outerBoundaryIs>
                </Polygon>
            </Placemark>
            <Placemark>
                <name>7</name>
                <styleUrl>#randomColour</styleUrl>
                <Polygon>
                    <extrude>1</extrude>
                    <tessellate>1</tessellate>
                    <outerBoundaryIs>
                        <LinearRing>
                            <coordinates>...</coordinates>
                        </LinearRing>
                    </outerBoundaryIs>
                </Polygon>
            </Placemark>
            [...]
        </Folder>
    </Document>
</kml>

(为简洁起见,数据更加模糊,而非隐私)

这是它在地球上显示的方式(好):

Google Earth

它在谷歌地图上的显示方式(不好):

Google Maps

问题是:为什么它会在地图上显示白色?这是地图功能,Javascript库,KML文件或其他什么问题?我还可以做些什么来在地图上实现相同的观看?

2 个答案:

答案 0 :(得分:2)

根据Google API <randomColor>不受支持!

链接还为您提供了所有支持的KML标记的列表...

另请注意,Google对使用样式呈现地图上的项目数量设置了一些限制。如果您的KML中有太多项目,它将回退到默认值。

但在你的情况下,因为randomColor。

答案 1 :(得分:0)

随机颜色模式在geoxml3 (the polys branch)中无效,这是一个错误,创建了issue并修复了它。

它始终适用于kmz branch

以上两个例子现在都有效。