Помогите пожалуйста разобраться с Google слоем в Openlayers
Добавлено: 04 янв 2011, 12:02
Уважаемые форумчане, помогите пожалуйста разобраться с google слоем в openlayers. При выборе его в LayerSwitchere и при попытке контролом point: new OpenLayers.Control.DrawFeature поставить точку - она отображается не в том месте где нужно, то есть выше на пару см на карте. Почитав много тем по поводу разных систем координат, я понял, что проблема в том что google слой в системе EPSG:900913, а векторный слой в системе координат EPSG:4326. Перепробовав всё - решил обратиться к вам. Не получается у меня ни с описанием системы координат при создании слоя, ни с projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326"), для карты. Очень нужна Ваша помощь! Любая подсказка будет для меня полезной. 
var options = {
//projection: new OpenLayers.Projection("EPSG:900913"),
projection: new OpenLayers.Projection("EPSG:4326"),
};
map = new OpenLayers.Map( 'map' , options );
layer = new OpenLayers.Layer.WMS( "Слой OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0", {layers: 'basic',projection: new OpenLayers.Projection("EPSG:4326")} );
vlayer = new OpenLayers.Layer.Vector( "Vector Layer", {projection: new OpenLayers.Projection("EPSG:900913")} );
gmap = new OpenLayers.Layer.Google(
"Слой Google Streets", // the default
{projection: new OpenLayers.Projection("EPSG:4326"), numZoomLevels: 20}
);
map.addLayers([ layer,gmap,vlayer]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
var point = new OpenLayers.LonLat(this.lon, this.lat);
// Need to convert zoom point to mercator too
point.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter(point, this.zoom);
вот что я делаю

var options = {
//projection: new OpenLayers.Projection("EPSG:900913"),
projection: new OpenLayers.Projection("EPSG:4326"),
};
map = new OpenLayers.Map( 'map' , options );
layer = new OpenLayers.Layer.WMS( "Слой OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0", {layers: 'basic',projection: new OpenLayers.Projection("EPSG:4326")} );
vlayer = new OpenLayers.Layer.Vector( "Vector Layer", {projection: new OpenLayers.Projection("EPSG:900913")} );
gmap = new OpenLayers.Layer.Google(
"Слой Google Streets", // the default
{projection: new OpenLayers.Projection("EPSG:4326"), numZoomLevels: 20}
);
map.addLayers([ layer,gmap,vlayer]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
var point = new OpenLayers.LonLat(this.lon, this.lat);
// Need to convert zoom point to mercator too
point.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter(point, this.zoom);
вот что я делаю