2011-07-21 24 views
1

我使用這個代碼來繪製地圖上的點:「對象有沒有方法‘的getBounds’」中的OpenLayers錯誤

function addPointToMap(pMap){ 
    var coordinates = new Array(); 

    // Style Point 
    var style_blue = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); 
    style_blue.strokeColor = "blue"; 
    style_blue.fillColor = "blue"; 

    // Make Point 
    coordinates.push(new OpenLayers.Geometry.Point(33, 33)); 
    var pointFeature = new OpenLayers.Feature.Vector(coordinates, null, style_blue); 

    // Layer 
    var pointsLayer = new OpenLayers.Layer.Vector("Points Layer"); 
    pointsLayer.addFeatures([pointFeature]); 
    pMap.addLayer(pointsLayer);   
} 

我從控制檯收到此錯誤:

Uncaught TypeError: Object POINT(33, 33) has no method 'getBounds' 

我在做什麼錯了?

回答

1

爲了完整起見,我收到了類似的錯誤,同時增加了多邊形(來自原始的WKT數據。出現沒有界限的錯誤是因爲對象是錯誤的類型。

當您致電addFeatures時,它需要一組OpenLayers.Feature.Vector對象,它們由Format.read創建。

var wkt_parser = new OpenLayers.Format.WKT(); 
var wkt_data_parsed = wkt_parser.read(some_raw_wkt_data_string); 
layer.addFeatures([wkt_data_parsed]); 
+0

我完全忘記了這個問題。 你是對的,它是錯誤的對象類型。 – Ben

0

您的地圖是否有「底層」?否則,您應該在地圖選項中添加選項'alloverlays'= true。我不知道如果這雖然解決您的問題...

+1

此外,請嘗試在gis.stackexchange.com上詢問您的問題,您可能會得到更好的幫助! – ivy

+0

謝謝。我已經設法解決這個問題 – Ben

1

答案是增加一個多點的幾何形狀:

function addPointToMap(pMap){ 
      var coordinates = new Array(); 

      // Style Point 
      var style_blue = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); 
      style_blue.strokeColor = "blue"; 
      style_blue.fillColor = "blue"; 

      // Make Point 
      coordinates.push(new OpenLayers.Geometry.Point(lon, lat)); 
      var pointsGeometry = new OpenLayers.Geometry.MultiPoint(coordinates); 
      var pointFeature = new OpenLayers.Feature.Vector(pointsGeometry, null, style_blue); 

      // Layer 
      var pointsLayer = new OpenLayers.Layer.Vector("Points Layer"); 
      pointsLayer.addFeatures([pointFeature]); 
      pMap.addLayer(pointsLayer);   
     } 
相關問題