我正在开发一个在 Google 地图上显示服务器生成的 KML 的应用程序。我负责业务层和后端,但现在我面临基于 extjs 的前端的问题。我想问一个关于地标着色的 KML 问题,看看它是否与 Google 地图或我的应用程序有关。由于我没有太多关于前端开发的细节,所以我会在需要时向我的同事询问其他代码/实现细节。
我现在所知道的是我们使用以下 Javascript 库:
- https://maps.googleapis.com/maps/api/js?v=3.10&sensor=false
- http://geoxml3.googlecode.com/svn/branches/polys/geoxml3.js
- http://geoxml3.googlecode.com/svn/trunk/ProjectedOverlay.js
我的目标是生成一个 KML,它显示在 Google 地图上并显示一组地理区域,每个区域由一个多边形表示,每个区域随机着色。我只需要相邻的多边形不显示相同的颜色。我发现MapColorMode.RANDOM
从我的 Java KML 库中应该可以解决问题。
所以我基于以下片段创建了一个 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>
(数据被混淆更多是为了简洁而不是隐私)
这是它在地球上的显示方式(好):
以及它在谷歌地图上的显示方式(坏):
问题是:为什么它在地图上显示为白色?是地图功能、Javascript 库、KML 文件还是其他问题?我还能做些什么来在地图上实现相同的查看效果?