我们知道googleearth 中我们可以将自己的坐标信息进行共享,其中使用的方式就是通过kml实现的。
什么是KML呢?KML全称:Keyhole Markup Language,是基于XML(eXtensible Markup Language,可扩展标记语言)语法标准的一种标记语言(markup language),采用标记结构,含有嵌套的元素和属性。关于kml的编写标准我就不多说了,具体可以参看:KML Interactive Sampler(kml显示器):http://kml-samples.googlecode.com/svn/trunk/interactive/index.html。google KML 教程:https://developers.google.com/kml/documentation/kml_tut?hl=zh-CN。
首先,我所使用的数据是从oracle数据库中读出来的地理信息数据,数据格式为:简单多边形:[[1,1],[2,2],[3,3],[4,4],[5,5]],双环形:[[[1,1],[2,2],[3,3]],[[1,1],[2,2],[3,3],[4,4]]],三环形及以上:[[],[],[]....]。
实现的思想是:
1.将数据库中的数据读取出来进行处理成: 1,1 2,2 3,3的形式(可以参考下面的代码,当然使用正则法则会更好)。
2.写三个模板:弹出框的信息样式模板,两环或者三环的模板,普通多边形模板。
3.使用io处理将数据写到文件中。
4.注意点:数据如果过大,请每次写进数据少点(如每次写进1000数据),我起初就遇到此问题:提示内存不足。
其中KML模板为,其中添加的数据就写在红色区域中:
<?xmlversion="1.0" encoding="Utf-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>项目</name>
<Style id="pointStyle">
<IconStyle>
<color>ffFF0000</color>
<scale>0.8</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href>
</Icon>
</IconStyle>
<LabelStyle>
<color>ffffffff</color>
<scale>0.7</scale>
</LabelStyle>
</Style>
<!-- 将数据格式化为模板类,此为一个style模板,将关于多边形的外观描述的style放在里面,其中我只改变其颜色值 -->
<Style id="polygonStyle1">
<IconStyle>
<scale>1.1</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
</Icon>
<hotSpotx="20" y="2" xunits="pixels"yunits="pixels"/>
</IconStyle>
<PolyStyle>
<color>ffB0E0E6</color>
</PolyStyle>
</Style>
<!-- 将数据格式化为模板类,此为一个文件模板,将多边形和环类放在里面 -->
<Folder>
<name>xxxxx</name>
XXXXXXXXXXXXXX
</Folder>
<Folder>
<name>xxxxx</name>
XXXXXXXXXXXXXX
</Folder>
</kml>
在google earth中打开KML,其效果图如下: