2013-05-21 3 views
0

Код ниже использует абсолютное положение для центра карты, но я хочу установить центр в соответствии с функцией векторного слоя, файл KML - это возможно? Я посмотрел на getCentroid, но не могу получить синтаксис правильно?Openlayers, получающий центроид векторного слоя и использующий его для установки центра карты

map = new OpenLayers.Map("Map"); 
var mapnik = new OpenLayers.Layer.OSM(); 
//Set centre position converting from WGS to Mercator 
var wgs84 = new OpenLayers.Projection("EPSG:4326"); 
var fromProjection = new OpenLayers.Projection("EPSG:4326"); // Transform from WGS 1984 
var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection 
var position  = new OpenLayers.LonLat(4.891280,52.373690).transform(fromProjection, toProjection); 

var layer = new OpenLayers.Layer.Vector("vectorlayer", { 
    projection: wgs84, 
    strategies: [new OpenLayers.Strategy.Fixed()], 
    protocol: new OpenLayers.Protocol.HTTP({ 
     url: "kmlfile.kml", //<-- relative or absolute URL to your .osm file 
     format: new OpenLayers.Format.KML() 
    }), 
    styleMap: new OpenLayers.StyleMap({ 
     "default": { 
      //pointRadius: "${radius}", 
      fillColor: "blue", 
      fillOpacity: 0.1, 
      strokeColor: "#5555ff", 
      strokeWidth: 2, 
      strokeOpacity: 0.8 
     } 
     , 
     "select": { 
      fillColor: "#8aeeef", 
      strokeColor: "#32a8a9" 
     } 
    }) 
}); 

map.addLayers([mapnik, layer]); 

map.addControl(new OpenLayers.Control.LayerSwitcher()); 

var scaleline = new OpenLayers.Control.ScaleLine(); 
map.addControl(scaleline); 


//Set centre of map and zoom level 
map.setCenter(position, 10); 

ответ

0

попробовать это (где слой ваш вектор на основе кода):

var bounds = layer.geometry.bounds; 
map.zoomToExtent(bounds); 

или

var bounds = layer.geometry.bounds; 
map.setCenter(bounds.getCenterLonLat()); 
+0

Gery, что не работает - карты нагрузки, но я просто получить белый экран для карты и масштаба - 10000 км - если я увеличиваю масштаб, то карта мира появится и не будет сосредоточена на функции KML. –

+0

, и если вы замените 'bounds' на' layer'? – Gery

Смежные вопросы