Làm cách nào để chuyển đổi Chuỗi thành OpenLayers.Geometry.Polygon bằng javascript?


8

Tôi đang sử dụng Javascript, jQuery, Java, GeoServer, OpenLayers và PostGIS.

Sử dụng lớp java ResultSettôi trả về Chuỗi này:

POLYGON((516000 2135000,515039.264020162 2125245.48389919,512193.976625564 2115865.82838175,507573.480615127 2107221.48834902,501355.339059327 2099644.66094067,493778.51165098 2093426.51938487,485134.171618255 2088806.02337444,475754.516100806 2085960.73597984,466000 2085000,456245.483899194 2085960.73597984,446865.828381746 2088806.02337444,438221.48834902 2093426.51938487,430644.660940673 2099644.66094067,424426.519384873 2107221.48834902,419806.023374436 2115865.82838175,416960.735979839 2125245.48389919,416000 2135000,416960.735979838 2144754.51610081,419806.023374436 2154134.17161825,424426.519384873 2162778.51165098,430644.660940673 2170355.33905933,438221.48834902 2176573.48061513,446865.828381745 2181193.97662556,456245.483899193 2184039.26402016,466000 2185000,475754.516100806 2184039.26402016,485134.171618254 2181193.97662556,493778.51165098 2176573.48061513,501355.339059327 2170355.33905933,507573.480615127 2162778.51165098,512193.976625564 2154134.17161825,515039.264020161 2144754.51610081,516000 2135000))

Khá lâu phải không? Vì vậy, bằng cách sử dụng hàm ajax của JQuery, tôi bắt được Chuỗi này và bây giờ tôi muốn chuyển đổi nó thành a OpenLayers.Geometry.Polygon, đây là dòng mà tôi sử dụng hàm ajax:

$.ajax({
    url:"Catcher",
    data:query,
    type:"POST",
    dataType:"text",
    success:function(data){
        var fea=new OpenLayers.Feature.Vector(data); //this doesn't work
        vectorLayer.addFeatures([fea]); // here I add the feature to the vector layer I created as a global variable
        map.zoomToExtent(bounds);
    }
});   

Làm cách nào để chuyển đổi?


console.log (data.d) có cung cấp cho bạn chuỗi đa giác WKT của bạn không? (POLYGON ((516000)?
CaptDragon

sử dụng truy vấn WFS có thể sẽ hoạt động tốt hơn
Ian Turton

Câu trả lời:


11

Sử dụng lớp OpenLayers.Format.WKT .

Hãy thử thay thế dòng này:

var fea=new OpenLayers.Feature.Vector(data); //this doesn't work

Đối với dòng này (nếu data.d = "POLYGON ((516000 ..."):

var fea = new OpenLayers.Format.WKT().read(data.d);

Đây là một ví dụ về cách sử dụng nó: http://dev.openlayers.org/examples/vector-formats.html

nhập mô tả hình ảnh ở đây


nó hoạt động với: var in_options = {'InternalProjection': OpenLayers.Projection ("EPSG: 4326"), 'bên ngoài': OpenLayers.Projection ("EPSG: 4326")}; var fea = new OpenLayers.Format.WKT (in_options) .read (dữ liệu);
Uriel

Vâng, tôi đã có mã ban đầu nhưng đã quyết định lấy nó ra và bạn sẽ tìm ra phần chiếu. Thông minh.
CaptDragon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.