Использование PNG или JPEG для карты с OpenLayers (проблема масштабирования / масштабирования) - PullRequest
7 голосов
/ 02 мая 2009

Я использую изображение для отображения моей карты с OpenLayers. Мой код JS выглядит так:

map = new OpenLayers.Map('map');

var options = {numZoomLevels: 7,
                isBaseLayer: true,
                };

var globe = new OpenLayers.Layer.Image(
    'Globe ESA',
    'http://upload.wikimedia.org/wikipedia/commons/0/07/World_map_blank_black_lines_4500px.gif',
    new OpenLayers.Bounds(-180, -90, 180, 90),
    new OpenLayers.Size(4500, 2234),
    options);

map.addLayers(globe);

markers = new OpenLayers.Layer.Markers("markers");
map.addLayer(markers);

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

Мой код CSS:

#map {
    width: 640px;
    height: 480px;
    border: 1px solid black;
}

Но я не могу заставить OpenLayers уменьшать большое изображение. Он всегда отображается в полном разрешении, и я не могу уменьшить масштаб, чтобы отобразить весь глобус. Помогите пожалуйста.

1 Ответ

11 голосов
/ 02 мая 2009

Вам необходимо установить размер изображения так, как оно должно отображаться при полном уменьшении.

var globe = new OpenLayers.Layer.Image(
    'Globe ESA',
    'http://upload.wikimedia.org/wikipedia/commonS/0/07/World_map_blank_black_lines_4500px.gif',
    new OpenLayers.Bounds(-180, -90, 180, 90),
    new OpenLayers.Size(1125,558),
    options);

Я изменил размер до четверти размера оригинала. Вы могли бы сделать это меньше, если хотите, чтобы оно было еще больше уменьшено.

...