private var zirancun_label:VectorLayer;
//添加kml文件作为图层(要求必须是利用图层管理器矢量图层下的导出工具生成,kml格式与geoserver导出的不一样)
//1.用globalmapper工具导出矢量kml文件。
//2.修改kml文件,参考openscale自带组件图层管理器导出的kml文件格式(!!不是geoserver导出的kml文件,当然可以修改之)。
//...主要需要替换<kml xmlns:kml="http://www.opengis.net/kml/2.2">
//...需要删除geomapper导出的kml中的folder目录。
//3.标注显示乱码问题,用记事本打开kml文件,然后保存kml文件为utf-8格式即可。
//4.复制kml文件到geoserver的webapps目录,重启geoserver
protected function button1_clickHandler(event:MouseEvent):void
{
kml_layer = new KML("point_zirancun"
, "http://localhost:8080/geoserver/point_zirancun.kml");
kml_layer.maxExtent=new Bounds(113.6528,35.8186,113.7064,35.8410);
map1.map.addLayer(kml_layer);
//添加标注图层
zirancun_label=new VectorLayer("zirancun_label");
_map.addLayer(zirancun_label);
}
//产生自动标注图层
protected function button10_clickHandler(event:MouseEvent):void
{
//xml用法示例:
//var oxml:XML=new XML("<order> <item id='1'> <menuName>burger</menuName><price>3.95</price></item> <item id='2'><menuName>fries</menuName><price>1.45</price> </item> </order>") ;//kml_layer.data;
//Alert.show(oxml.item[0].@id); //值== 1
//Alert.show(oxml.item[0].menuName); // 值== burger
//oxml.item.(menuName=="burger").@id=111; //查找根目录item标签中menuName=burger,并把它的id属性设置为111
//Alert.show(oxml.item.(menuName=="burger").@id) //值=111
//Alert.show(oxml.item); //选择器返回的是所有标签为item的字符串
//Alert.show(oxml); //选择器返回的的是xml内的整个字符串内容。
//Alert.show(oxml.child("item")[0].@id + "," + oxml.child("item")[0].menuName);
//根据geoserver导出的kml图层格式读取kml文件中的数据。!!!标签尖括号内的叫属性,标签段之间的叫节点。
var oxml:XML=kml_layer.data;
//Alert.show(oxml.toString().substr(0,400));
//Alert.show(oxml.Document.Placemark[0].name); //!! 路径,然后。。。
//Alert.show(ft_coordinates);
//Alert(oxml.Document.Placemark.children().length().toString());
//为kml图层添加标注图层
for each (var placemark:XML in oxml.Document.Placemark)
{
//Alert.show(placemark.name);
var ft_name:String=placemark.name;//oxml.Document.Placemark[0].name;
var ft_coordinates:String=placemark.Point.coordinates;//oxml.Document.Placemark[0].Point.coordinates[0];//!! 路径,然后。。。
var s:Array=ft_coordinates.split(",");
//Alert.show("x=" + s[0] + ",y=" + s[1] + ",name=" + ft_name);
var pt:org.openscales.geometry.Point=new org.openscales.geometry.Point(s[0],s[1]);
var ft:LabelFeature=new LabelFeature(pt);
ft.text=ft_name; ////标注显示乱码问题,用记事本打开kml文件,然后保存kml文件为utf-8格式即可。
zirancun_label.addFeature(ft);
zirancun_label.redraw(true);
}
}
参考kml文件格式:(openscale 的KML对象可以正常加载的格式)
<?xml version="1.0" encoding="iso-8859-1"?>
<kml xmlns:kml="http://www.opengis.net/kml/2.2">
<Document>
<name>Point Features</name>
<!-- Begin Style Definitions -->
<Style id="point1">
<IconStyle><Icon>kml_ext_files\kml_symbol_dot.png</Icon></IconStyle>
</Style>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 圪道水 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>113.6627714406,35.8357811560,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 上茅草坪 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>113.6828721723,35.8328115865,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 船仓 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>113.6956112696,35.8312104008,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 五碣谷洞 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>113.7021266698,35.8287611062,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 寨碣 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>113.6879315954,35.8271057229,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 四水圪节 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>113.8543131177,35.5287351634,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 东反烟 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>113.8251642195,35.5795422254,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 洪石沟 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>114.0555112391,35.4256741992,0</coordinates>
</Point>
</Placemark>
<Placemark>
<description>Unknown Point Feature</description>
<name><![CDATA[ 许河 ]]></name>
<styleUrl>#point1</styleUrl>
<Point>
<coordinates>114.0308726784,35.1994823471,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
该博客介绍了如何加载KML文件并在地图上显示点特征。KML文件包含多个地标位置,如圪道水、上茅草坪等,使用同一风格进行标注。每个地标由坐标和描述组成。
9364

被折叠的 条评论
为什么被折叠?



