ajax根据坐标查询WMS地图服务属性信息
2021-01-20 09:12
标签:attr oid data maximum 测试的 lan 查询 sse element 附上jquery.xml2json源码 我测试的是ArcServer发布的wms服务,geoserver发布的wms服务请自行测试。 附上xml2json代码,感谢原作者xtreemrage,github链接https://github.com/xtreemrage/jquery.xml2json ajax根据坐标查询WMS地图服务属性信息 标签:attr oid data maximum 测试的 lan 查询 sse element 原文地址:https://www.cnblogs.com/ahnugiser-yylf/p/13323818.html 1 html lang="en">
2
3 head>
4 meta charset="UTF-8">
5 meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
6 meta http-equiv="X-UA-Compatible" content="ie=edge">
7 title>demotitle>
8 style>
9
10 style>
11
12 head>
13
14 body>
15 script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js">script>
16 script type="text/javascript" src="jquery.xml2json.js">script>
17 script>
18 $.ajax({
19 url: "http://127.0.0.1:6080/arcgis/services/Mymap/MapServer/WMSServer",
20 data: {
21 version: ‘1.3.0‘,
22 request: ‘getfeatureinfo‘,
23 layers: ‘0‘,
24 styles: ‘‘,
25 CRS: ‘EPSG:4326‘,
26 bbox: ‘28.123462,120.123272,29.481238,120.123941‘,//xmin,ymin,xmax,ymax
27 width: ‘1730‘,
28 height: ‘919‘,
29 info_format: ‘text/xml‘,
30 x: ‘760‘,
31 y: ‘229‘,
32 query_layers: "0"
33 },
34 dataType: ‘xml‘,
35 success: function(data) {
36 console.log(data);
37 },
38 error: function(e) {
39 console.log(e);
40 }
41
42 });
43 script>
44 body>
45
46 html>
1 /*
2 ### jQuery XML to JSON Plugin v1.3 - 2013-02-18 ###
3 * http://www.fyneworks.com/ - diego@fyneworks.com
4 * Licensed under http://en.wikipedia.org/wiki/MIT_License
5 ###
6 Website: http://www.fyneworks.com/jquery/xml-to-json/
7 */
8 /*
9 # INSPIRED BY: http://www.terracoder.com/
10 AND: http://www.thomasfrank.se/xml_to_json.html
11 AND: http://www.kawa.net/works/js/xml/objtree-e.html
12 */
13 /*
14 This simple script converts XML (document of code) into a JSON object. It is the combination of 2
15 ‘xml to json‘ great parsers (see below) which allows for both ‘simple‘ and ‘extended‘ parsing modes.
16 */
17 // Avoid collisions
18 ;
19 if (window.jQuery)(function($) {
20
21 // Add function to jQuery namespace
22 $.extend({
23
24 // converts xml documents and xml text to json object
25 xml2json: function(xml, extended) {
26 if (!xml) return {}; // quick fail
27
28 //### PARSER LIBRARY
29 // Core function
30 function parseXML(node, simple) {
31 if (!node) return null;
32 var txt = ‘‘,
33 obj = null,
34 att = null;
35 var nt = node.nodeType,
36 nn = jsVar(node.localName || node.nodeName);
37 var nv = node.text || node.nodeValue || ‘‘;
38 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,nt,nv.length+‘ bytes‘]);
39 if (node.childNodes) {
40 if (node.childNodes.length > 0) {
41 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘CHILDREN‘,node.childNodes]);
42 $.each(node.childNodes, function(n, cn) {
43 var cnt = cn.nodeType,
44 cnn = jsVar(cn.localName || cn.nodeName);
45 var cnv = cn.text || cn.nodeValue || ‘‘;
46 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘node>a‘,cnn,cnt,cnv]);
47 if (cnt == 8) {
48 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘node>b‘,cnn,‘COMMENT (ignore)‘]);
49 return; // ignore comment node
50 } else if (cnt == 3 || cnt == 4 || !cnn) {
51 // ignore white-space in between tags
52 if (cnv.match(/^\s+$/)) {
53 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘node>c‘,cnn,‘WHITE-SPACE (ignore)‘]);
54 return;
55 };
56 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘node>d‘,cnn,‘TEXT‘]);
57 txt += cnv.replace(/^\s+/, ‘‘).replace(/\s+$/, ‘‘);
58 // make sure we ditch trailing spaces from markup
59 } else {
60 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘node>e‘,cnn,‘OBJECT‘]);
61 obj = obj || {};
62 if (obj[cnn]) {
63 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘node>f‘,cnn,‘ARRAY‘]);
64
65 // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
66 if (!obj[cnn].length) obj[cnn] = myArr(obj[cnn]);
67 obj[cnn] = myArr(obj[cnn]);
68
69 obj[cnn][obj[cnn].length] = parseXML(cn, true /* simple */ );
70 obj[cnn].length = obj[cnn].length;
71 } else {
72 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘node>g‘,cnn,‘dig deeper...‘]);
73 obj[cnn] = parseXML(cn);
74 };
75 };
76 });
77 }; //node.childNodes.length>0
78 }; //node.childNodes
79 if (node.attributes) {
80 if (node.attributes.length > 0) {
81 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘ATTRIBUTES‘,node.attributes])
82 att = {};
83 obj = obj || {};
84 $.each(node.attributes, function(a, at) {
85 var atn = jsVar(at.name),
86 atv = at.value;
87 att[atn] = atv;
88 if (obj[atn]) {
89 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘attr>‘,atn,‘ARRAY‘]);
90
91 // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
92 //if(!obj[atn].length) obj[atn] = myArr(obj[atn]);//[ obj[ atn ] ];
93 obj[cnn] = myArr(obj[cnn]);
94
95 obj[atn][obj[atn].length] = atv;
96 obj[atn].length = obj[atn].length;
97 } else {
98 /*DBG*/ //if(window.console) console.log([‘x2j‘,nn,‘attr>‘,atn,‘TEXT‘]);
99 obj[atn] = atv;
100 };
101 });
102 //obj[‘attributes‘] = att;
103 }; //node.attributes.length>0
104 }; //node.attributes
105 if (obj) {
106 obj = $.extend((txt != ‘‘ ? new String(txt) : {}), /* {text:txt},*/ obj || {} /*, att || {}*/ );
107 //txt = (obj.text) ? (typeof(obj.text)==‘object‘ ? obj.text : [obj.text || ‘‘]).concat([txt]) : txt;
108 txt = (obj.text) ? ([obj.text || ‘‘]).concat([txt]) : txt;
109 if (txt) obj.text = txt;
110 txt = ‘‘;
111 };
112 var out = obj || txt;
113 //console.log([extended, simple, out]);
114 if (extended) {
115 if (txt) out = {}; //new String(out);
116 txt = out.text || txt || ‘‘;
117 if (txt) out.text = txt;
118 if (!simple) out = myArr(out);
119 };
120 return out;
121 }; // parseXML
122 // Core Function End
123 // Utility functions
124 var jsVar = function(s) { return String(s || ‘‘).replace(/-/g, "_"); };
125
126 // NEW isNum function: 01/09/2010
127 // Thanks to Emile Grau, GigaTecnologies S.L., www.gigatransfer.com, www.mygigamail.com
128 function isNum(s) {
129 // based on utility function isNum from xml2json plugin (http://www.fyneworks.com/ - diego@fyneworks.com)
130 // few bugs corrected from original function :
131 // - syntax error : regexp.test(string) instead of string.test(reg)
132 // - regexp modified to accept comma as decimal mark (latin syntax : 25,24 )
133 // - regexp modified to reject if no number before decimal mark : ".7" is not accepted
134 // - string is "trimmed", allowing to accept space at the beginning and end of string
135 var regexp = /^((-)?([0-9]+)(([\.\,]{0,1})([0-9]+))?$)/
136 return (typeof s == "number") || regexp.test(String((s && typeof s == "string") ? jQuery.trim(s) : ‘‘));
137 };
138 // OLD isNum function: (for reference only)
139 //var isNum = function(s){ return (typeof s == "number") || String((s && typeof s == "string") ? s : ‘‘).test(/^((-)?([0-9]*)((\.{0,1})([0-9]+))?$)/); };
140
141 var myArr = function(o) {
142
143 // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
144 //if(!o.length) o = [ o ]; o.length=o.length;
145 if (!$.isArray(o)) o = [o];
146 o.length = o.length;
147
148 // here is where you can attach additional functionality, such as searching and sorting...
149 return o;
150 };
151 // Utility functions End
152 //### PARSER LIBRARY END
153
154 // Convert plain text to xml
155 if (typeof xml == ‘string‘) xml = $.text2xml(xml);
156
157 // Quick fail if not xml (or if this is a node)
158 if (!xml.nodeType) return;
159 if (xml.nodeType == 3 || xml.nodeType == 4) return xml.nodeValue;
160
161 // Find xml root node
162 var root = (xml.nodeType == 9) ? xml.documentElement : xml;
163
164 // Convert xml to json
165 var out = parseXML(root, true /* simple */ );
166
167 // Clean-up memory
168 xml = null;
169 root = null;
170
171 // Send output
172 return out;
173 },
174
175 // Convert text to XML DOM
176 text2xml: function(str) {
177 // NOTE: I‘d like to use jQuery for this, but jQuery makes all tags uppercase
178 //return $(xml)[0];
179
180 /* prior to jquery 1.9 */
181 /*
182 var out;
183 try{
184 var xml = ((!$.support.opacity && !$.support.style))?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();
185 xml.async = false;
186 }catch(e){ throw new Error("XML Parser could not be instantiated") };
187 try{
188 if((!$.support.opacity && !$.support.style)) out = (xml.loadXML(str))?xml:false;
189 else out = xml.parseFromString(str, "text/xml");
190 }catch(e){ throw new Error("Error parsing XML string") };
191 return out;
192 */
193
194 /* jquery 1.9+ */
195 return $.parseXML(str);
196 }
197
198 }); // extend $
199
200 })(jQuery);
文章标题:ajax根据坐标查询WMS地图服务属性信息
文章链接:http://soscw.com/index.php/essay/44464.html