2012-06-12 2 views
0

안녕하세요 저는 openlayers의 초보자입니다. 다음 코드를 openlayers에서 제공하는 예제에서 가져 와서 단 한 번의 클릭으로 4 개의 다각형을 만들고 각각을 드래그 앤 드롭하려고합니다. 새로운 위치로, 이것이 가능한가?OpenLayers 클릭시 4 개의 독립적 인 다각형 생성

미리 도움을 청하십시오.

코드 :

<script type="text/javascript"> 
    var map, vectors, controls; 
    function init(){ 
     map = new OpenLayers.Map('map'); 
     var options = {numZoomLevels: 3}; 
     var graphic = new OpenLayers.Layer.Image(
      'some title', 
      'image.png', 
      new OpenLayers.Bounds(-180, -88.759, 180, 88.759), 
      new OpenLayers.Size(800, 200), 
      options 
     ); 
     graphic.events.on({ 
      loadstart: function() { 
       OpenLayers.Console.log("loadstart"); 
      }, 
      loadend: function() { 
       OpenLayers.Console.log("loadend"); 
      } 
     }); 
     var jpl_wms = new OpenLayers.Layer.WMS("title", 
      "http://t1.hypercube.telascience.org/cgi-bin/landsat7", 
      {layers: "landsat7"}, options); 
      vectors = new OpenLayers.Layer.Vector("Vector Layer"); 
      map.addLayers([graphic, vectors]); 
      map.addControl(new OpenLayers.Control.LayerSwitcher()); 
      map.addControl(new OpenLayers.Control.MousePosition()); 
      controls = { 
       point: new OpenLayers.Control.DrawFeature(vectors, 
          OpenLayers.Handler.Point), 
       shape: 
//*************This is what i'm trying to do*************************************************** 
       for (i=0; i<5; i++) 
       {  
       new OpenLayers.Control.DrawFeature(vectors, 
         OpenLayers.Handler.RegularPolygon, 
         {handlerOptions: {radius: 5, sides: 4, snapAngle: 45 }}), 
       } 

       drag: new OpenLayers.Control.DragFeature(vectors) 
      }; 
      for(var key in controls) { 
       map.addControl(controls[key]); 
      } 
      map.setCenter(new OpenLayers.LonLat(0, 0), 3); 
      document.getElementById('noneToggle').checked = true; 
     } 
     function toggleControl(element) { 
      for(key in controls) { 
       var control = controls[key]; 
       if(element.value == key && element.checked) { 
        control.activate(); 
       } else { 
        control.deactivate(); 
       } 
      } 
     } 
</script> 

답변

0

당신은 (당신이 당신의 폴리곤은 임의 여부가 되길 원한다면 나도 몰라) 임의의 선형 링을 만들어야합니다. 선형 링은 다각형이 필요로하는 모든 점이있는 객체입니다.

이것은 당신이지도에 다각형을 추가해야하는 방법이다
var polygonFeatures = new Array(); 
for (i = 0; i < 4; i++) { 

    var site_points = new Array(); 

    // Whatever points you want to us in site points 
    // A point is an OpenLayers.Geometry.Point 
    var linear_ring = new OpenLayers.Geometry.LinearRing(site_points); 

    // Create a feature for the polygon(s) to be in 
    polygonFeatures[i] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linear_ring]); 
} 

// Add the features to the vector layer 
vectors.addFeatures([polygonFeatures]); 

, 당신은 컨트롤에서 그들을 정의하지 않아야합니다. dragfeature는 이미 정확합니다. site_points에 대해 무언가를 파악하십시오.

관련 문제