Openlayers имеют выравнивание по карте, отображаемой в iframe в Chrome - PullRequest
1 голос
/ 01 ноября 2011

У меня есть карта Openlayers 2.11, отображаемая в Iframe.Он отлично работает в IE и Firefox.В Chrome слои смещены.Это легко воспроизвести на примерах Openlayers.Создайте страницу aspx, как это (ниже).После загрузки переместите карту, перетаскивая ее.Он ведет себя так, как ожидается в IE и Firefox.В Chrome слой перемещается независимо.Это происходит независимо от того, установил ли я sphericalMercator = true на слой (у меня есть пример локально).Если пример НЕ в Iframe, то он работает правильно.Важно, чтобы я мог запустить карту в Ифраме.

Любой совет приветствуется.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

    <div style="float:right;width:800px;height:600px">
        <iframe runat="server" frameborder="0" src="http://openlayers.org/dev/examples/vector-features.html" width="100%" height="100%"></iframe>
    </div>
    </form>
</body>
</html>

1 Ответ

1 голос
/ 10 ноября 2011

Проблема описана здесь:

http://code.google.com/p/ala-citizenscience/issues/detail?id=6

Решение состоит в том, чтобы иметь собственную версию OpenLayers с некоторыми незначительными изменениями (требуется jQuery): Искать:

renderers:['SVG','VML','Canvas']

и измените его на:

renderers:(jQuery.browser.webkit?['Canvas','VML']:['SVG','Canvas','VML'])

(Если код OpenLayer свернут, это часть длинной строки с несколькими инструкциями)


Если вы используете изображения и стиль OpenLayers и хотите сохранить их, вам также следует изменить:

если OpenLayers 2.11:

return(function(){return l;})

с

return(function(){return "http://www.openlayers.org/api/";})

если OpenLayers 2.10:

var scriptLocation;

с

var scriptLocation = "http://www.openlayers.org/api/";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...