Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   OpenLayers: проекция отдельного VectorLayer как в GoogleEarth (https://javascript.ru/forum/library-toolkit-framework/23594-openlayers-proekciya-otdelnogo-vectorlayer-kak-v-googleearth.html)

Vagolo 29.11.2011 15:28

OpenLayers: проекция отдельного VectorLayer как в GoogleEarth
 
Необходимо в векторном слое, который единственный и базовый, отобразить полигон (данные из KML-файла, созданного в GoogleEarth).
Собственно полигон отображается, но сжатым по вертикали. По всей видимости проблема в проекции...
Но если подключить базовым слоем Google, затем векторный слой с этим же KML-файлом, то все отображается без искажений.
Ниже приведен код с Google и векторным слоями:

var geographic = new OpenLayers.Projection("EPSG:4326");
var mercator = new OpenLayers.Projection("EPSG:900913");
var lon = (lonMax-lonMin)/2+lonMin;
var lat = (latMax-latMin)/2+latMin;
var bounds = new OpenLayers.Bounds(lonMin, latMin, lonMax, latMax);
bounds.transform(geographic,mercator);

var zoom = 12;
var options = {
	projection: mercator,
	displayProjection: geographic,
	maxExtent: bounds
};

map = new OpenLayers.Map('map_element', options);

var layer = new OpenLayers.Layer.Google(
             'Google'
             ,{
               type: google.maps.MapTypeId.HYBRID
               ,numZoomLevels: 20
               ,'sphericalMercator': true
              }
);

map.addLayer(layer);

var myKML = new OpenLayers.Layer.GML(
  "KML layer",
  "kml/kml01.kml", 
  {
   format: OpenLayers.Format.KML,
   projection: map.displayProjection
  }
);
map.addLayer(myKML);

var proj = geographic;
var point = new OpenLayers.LonLat(lon, lat);
map.setCenter(point.transform(proj, map.getProjectionObject()), zoom);


Как отобразить kml01.kml в браузере с помощью OpenLayers без искажения? Помогите, плз!

vdann 29.02.2012 13:00

Самый простой вариант скрыть или может даже удалить слой Google после инициализации


Часовой пояс GMT +3, время: 08:10.