2011-11-27 39 views
1
var map; 
var vectors; 
var point; 
var drag; 

在地圖上的任何長和緯度可以使用OpenStreetMap的點沒有顯示張開層

function mapCreate(lon,lat){ 
      map = new OpenLayers.Map("map1"); 
      var osm = new OpenLayers.Layer.OSM(); 
      //create a vector 
      vectors = new OpenLayers.Layer.Vector("Vector Layer"); 
      map.addLayer(osm); 
      var center = new OpenLayers.LonLat(lon,lat).transform(
       new OpenLayers.Projection("EPSG:4326"), 
       map.getProjectionObject() 
      ); 

分配經緯度長到點

point = new OpenLayers.Geometry.Point(lat,lon); 

添加指向矢量

 vectors.addFeatures([new OpenLayers.Feature.Vector(point)]); 

     map.setCenter(center, 15); 
     //add vectors to map 
     map.addLayer(vectors); 

    } 

我錯過了什麼嗎?

+0

point = new OpenLayers.Geometry.Point(center.lon,center.lat); Point的構造函數需要一個OpenLayers.LonLat lon和lat。 – Paul

回答

0

您是否正在查看完整的地圖?您很有可能將該點的位置設置爲緯度/經度。 OpenLayers LonLat對象的命名只是爲了欺騙像你這樣的無辜用戶,認爲它會自動轉換經緯度,或者期望它們或其他東西。不要相信它,重新投影到你的地圖的投影中。

0

我以爲收集是必要的,但看起來像你有交換& lon。一個點必須有lon,然後lat。

feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Collection([new OpenLayers.Geometry.Point(0, 0)]), {}); 
vectors.addFeatures([feature]);