MultiPolygon demo

http://stackoverflow.com/q/13939308/813758

by _DR_

HTML

<script src="http://openlayers.org/dev/OpenLayers.js"></script>
<div id="map" style="width:640px; height:480px;"></div>

JavaScript

var options = {
    div: "map",
    zoom: 13,
    center: [-9075004.4955698, 5028040.5259088],
    layers: [
        new OpenLayers.Layer.OSM()
    ]
},
source = [
    [{x: -9075004, y: 5028040}, {x:-9079132, y: 5025403}, {x: -9072673, y: 5023568}],
    [{x: -9074004, y: 5026040}, {x:-9073132, y: 5027403}, {x: -9074673, y: 5026568}],
    [{x: -9073004, y: 5027040}, {x:-9072132, y: 5029403}, {x: -9075673, y: 5028568}]
],
polygonList = [],
multuPolygonGeometry,
multiPolygonFeature,    
vector = new OpenLayers.Layer.Vector('multiPolygon'),
map = new OpenLayers.Map(options);


for (var i=0; i<source.length; i+=1) {
    var pointList = [];
    for (var j=0; j<source[i].length; j+=1) {
        var point = new OpenLayers.Geometry.Point(source[i][j].x, source[i][j].y);
        pointList.push(point);
    }
    var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
    var polygon = new OpenLayers.Geometry.Polygon([linearRing]);
    polygonList.push(polygon);
}
multuPolygonGeometry = new OpenLayers.Geometry.MultiPolygon(polygonList);
multiPolygonFeature = new OpenLayers.Feature.Vector(multuPolygonGeometry);

vector.addFeatures(multiPolygonFeature);
map.addLayer(vector);