2015-11-13 56 views
0

我想在我的地圖上顯示一些多邊形,我是新的整個OpenLayers地圖geojson的東西,所以請溫柔請:)。OpenLayers 2,GeoJSON不能獲得座標

首先哪些工作:

vector1 = new OpenLayers.Layer.Vector("GeoJSON1", 
{ 
    projection  : "EPSG:4326", 
    strategies  : [new OpenLayers.Strategy.Fixed()], 
    protocol   : new OpenLayers.Protocol.HTTP({ 
          url: "test.php", 
          format: new OpenLayers.Format.GeoJSON() 
         }) 
}); 

這段代碼工作,從test.php的顯示在服務器上,在位置,應該是GeoJSON的。但我試圖達到的geojson是在另一臺服務器上,它會拋出錯誤(我知道我可以設置標題,它會工作),但我不想這樣做。

這不工作:

var geojs_format = new OpenLayers.Format.GeoJSON(); 
var geojsval= { 
       "type": "Polygon", 
       "coordinates": 
        [[[11.0878902207, 45.1602390564], 
         [14.931640625, 40.9228515625], 
         [0.8251953125, 41.0986328125], 
         [7.63671875, 48.96484375], 
         [11.0878902207, 45.1602390564]]] 
      }; 
vector = new OpenLayers.Layer.Vector("GeoJSON",{projection:"EPSG:4326"}); 
vector.addFeatures(geojs_format.read(geojsval)); 

這不工作 - 它在不同的地方顯示的多邊形即使投射在同樣的方式指定(或至少對我來說...)。

+0

今後請不要交叉提問。有關更多信息,請參閱[這裏](http://meta.stackexchange.com/q/64068)。 – Matt

回答

0

我解決了這個問題。在創建OpenLayers.Format.GeoJSON時,您可以像這樣進行特定的投影...

var geojs_format = new OpenLayers.Format.GeoJSON({ 
      'internalProjection': new OpenLayers.Projection("EPSG:900913"), 
      'externalProjection': new OpenLayers.Projection("EPSG:4326") 
     }); 

解決了這個問題。