如何将 OpenLayers 地图集成到 jQuery-ui 对话框中?

发布于 2024-12-04 09:21:51 字数 265 浏览 5 评论 0原文

我有一个带有 Openlayer 地图的网页。当用户单击标记时,将打开一个 jquery-ui 对话框并显示来自 ajax 调用的一些信息。我还想显示一个以单击的标记为中心的小型 openlayers 地图。

尝试将地图嵌入到对话框中时出现问题。

正确的操作顺序是什么:

  • init OL map
  • 声明 jquery 对话框
  • 打开 jquery 对话框

谢谢

alberto

I have a web page with an Openlayer map. When the user clicks on a marker, a jquery-ui dialog opens and shows some info coming from an ajax call. I'd like to show also a small openlayers map centered around the clicked marker.

The problem arise trying to embed the map inside the dialog.

What is the correct order of operations:

  • init OL map
  • declare jquery dialog
  • open jquery dialog

thank you

alberto

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁的新欢旧爱 2024-12-11 09:21:51

这是我的(工作)解决方案:

// create map container (id=map) and append to document body
var div = $('<div />')
            .attr('id', 'map').
            css({width:400,height:400})
            .appendTo($('body'));

//start a simple map, code from on http://openlayers.org/dev/examples/osm.html
map = new OpenLayers.Map( 'map');
layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
map.addLayer(layer);
map.setCenter(
    new OpenLayers.LonLat(-71.147, 42.472).transform(
        new OpenLayers.Projection("EPSG:4326"),
        map.getProjectionObject()
        ), 12
    );

// initialize the jQueryUI Dialog
div.dialog({
    width:800,
    height:600,
    title: 'My Map',
    resizeStop: function(){
        map.updateSize(); //to prevent drag-zoom error
    },
    dragStop: function(){
        map.updateSize(); //to prevent drag-zoom error
    });

here is my (working) solution:

// create map container (id=map) and append to document body
var div = $('<div />')
            .attr('id', 'map').
            css({width:400,height:400})
            .appendTo($('body'));

//start a simple map, code from on http://openlayers.org/dev/examples/osm.html
map = new OpenLayers.Map( 'map');
layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
map.addLayer(layer);
map.setCenter(
    new OpenLayers.LonLat(-71.147, 42.472).transform(
        new OpenLayers.Projection("EPSG:4326"),
        map.getProjectionObject()
        ), 12
    );

// initialize the jQueryUI Dialog
div.dialog({
    width:800,
    height:600,
    title: 'My Map',
    resizeStop: function(){
        map.updateSize(); //to prevent drag-zoom error
    },
    dragStop: function(){
        map.updateSize(); //to prevent drag-zoom error
    });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文