Javascript 如何使用谷歌地图在openlayers中取消投影和重新投影多边形顶点
我想重新投影多边形的顶点。我已经能够实现这一点的边界,但有点麻烦的顶点Javascript 如何使用谷歌地图在openlayers中取消投影和重新投影多边形顶点,javascript,google-maps,openlayers,polygon,Javascript,Google Maps,Openlayers,Polygon,我想重新投影多边形的顶点。我已经能够实现这一点的边界,但有点麻烦的顶点 function onFeatureModified(event) { var bounds = event.feature.geometry.getBounds(); var answer = "bottom: " + bounds.bottom + "\n"; answer += "left: " + bounds.left + "\
function onFeatureModified(event) {
var bounds = event.feature.geometry.getBounds();
var answer = "bottom: " + bounds.bottom + "\n";
answer += "left: " + bounds.left + "\n";
answer += "right: " + bounds.right + "\n";
answer += "top: " + bounds.top + "\n";
alert(answer);
var mapProjv = map.getProjectionObject();
var epsg4326v = new OpenLayers.Projection("EPSG:4326");
var verticesNative = event.features[0].geometry.getVertices();
var verticesLatLon = verticesNative.transform( mapProjv , epsg4326v );
var vertices = verticesNative;
alert(verticesNative);
}
下面是有效的代码:
var vertices = event.features[0].geometry.getVertices();
alert(vertices);
getVertices()
方法返回一个包含OpenLayers.Geometry.Point
对象的数组,因此不能对其调用transform()
方法。相反,您应该在数组中循环并对每个对象调用transform()
,如下所示:
var vertices = event.features[0].geometry.getVertices();
var transformedVertices = [];
for(var i=0; i < vertices.length; i++){
transformedVertices.push(vertices[i].transform(
new OpenLayers.Projection("EPSG:900913"),
new OpenLayers.Projection("EPSG:4326")
));
}
//create new feature with transformed vertices
var-vertices=event.features[0].geometry.getVertices();
var transformedVertices=[];
对于(var i=0;i