Geometry有多种格式,例如WKT, GML, KML等格式。OpenLayers提供Geometry格式的转换方法,可以实现不同格式的Geometry的转换。
Geometry格式转换类位于OpenLayers.Format命名空间下。本文以WKT--> GML的转换来说明OpenLayers Geometry格式转换方法的使用。
1. 定义WKT Geometry
var wkt = "POLYGON((6.027164 49.524078,6.088064 49.680508,5.948726 49.772232,5.941587 49.91943,6.03742 50.064381,6.147439 50.130783,6.211109 50.166946,6.312177 50.134426,6.340263 49.998951,6.525142 49.858585,6.734586 49.815399,6.715019 49.685902,6.603117 49.621159,6.636707 49.462303,6.57162 49.490456,6.315996 49.495625,6.02716449.524078))”;
2. 创建WKT Format对象
var wkt_c = new OpenLayers.Format.WKT();
3. 利用wkt_c读入wkt数据,并转换为OpenLayers的Geometry对象
var geometry = new wkt_c.read(wkt);
4. 创建GMK Format对象
var gml_c = new OpenLayers.Format.GML();
5. 利用gml_c对象将geometry写为gml格式
var gml = new gml_c.write(geometry);
下面是一个OpenLayers格式转换器代码
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2 <HTML> 3 <HEAD> 4 <TITLE> OpenLayers: Convert Data Format </TITLE> 5 <META NAME="Generator" CONTENT="EditPlus"> 6 <META NAME="Author" CONTENT=""> 7 <META NAME="Keywords" CONTENT=""> 8 <META NAME="Description" CONTENT=""> 9 <script src="./OpenLayers-2.10/lib/OpenLayers.js"></script> 10 <script type="text/javascript"> 11 function onConvertClick() 12 { 13 var inp = document.getElementById("input"); 14 var out = document.getElementById("output"); 15 var selector = document.getElementById("format"); 16 var format = selector.value; 17 18 var wkt = inp.value; 19 var wkt_c = new OpenLayers.Format.WKT(); 20 var geometry = wkt_c.read(wkt); 21 22 var convertor = createConvertor(format); 23 var text = convertor.write(geometry); 24 25 out.value = text; 26 } 27 28 function createConvertor(type) 29 { 30 var convertor = null; 31 switch(type) 32 { 33 case "GML": 34 convertor = new OpenLayers.Format.GML(); 35 break; 36 case "KML": 37 convertor = new OpenLayers.Format.KML(); 38 break; 39 case "GeoJSON": 40 convertor = new OpenLayers.Format.GeoJSON(); 41 break; 42 } 43 return convertor; 44 } 45 </script> 46 </HEAD> 47 48 <BODY> 49 <table> 50 <tr> 51 <td> 52 <SELECT NAME="format" id="format"> 53 <OPTION value="GML">GML</OPTION> 54 <OPTION value="KML">KML</OPTION> 55 <OPTION value="GeoJSON">GeoJSON</OPTION> 56 </SELECT> 57 </td> 58 <td> 59 <input type="button" value="Convert" onClick="onConvertClick();"> 60 </td> 61 </tr> 62 <tr> 63 <td>input:</td> 64 <td><textarea id="input" rows="10" cols="80">POLYGON((6.027164 49.524078,6.088064 49.680508,5.948726 49.772232,5.941587 49.91943,6.03742 50.064381,6.147439 50.130783,6.211109 50.166946,6.312177 50.134426,6.340263 49.998951,6.525142 49.858585,6.734586 49.815399,6.715019 49.685902,6.603117 49.621159,6.636707 49.462303,6.57162 49.490456,6.315996 49.495625,6.02716449.524078))</textarea></td> 65 </tr> 66 <tr> 67 <td>output:</td> 68 <td><textarea id="output" rows="20" cols="80"></textarea></td> 69 </tr> 70 </table> 71 </BODY> 72 </HTML>