Необходимо в векторном слое, который единственный и базовый, отобразить полигон (данные из 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 без искажения? Помогите, плз!