Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Map 传单.js:在页面加载时打开所有弹出气泡_Map_Cloudmade - Fatal编程技术网

Map 传单.js:在页面加载时打开所有弹出气泡

Map 传单.js:在页面加载时打开所有弹出气泡,map,cloudmade,Map,Cloudmade,我正试图从mobile.js文档中了解如何在显示页面时打开多个弹出窗口。例如,如果一个有三个标记(每个标记代表一座建筑),则每个标记都会立即打开其弹出窗口 隐晦地说: “使用Map#openPopup打开弹出窗口,同时确保一次只打开一个弹出窗口(建议使用),或者使用Map#addLayer打开任意数量的弹出窗口。” 但是 没有给出如何实现这一目标的提示 有人能澄清一下这是否可行,并给出一些提示吗?您必须将弹出窗口添加为图层。 请尝试以下示例代码: var popupLocation1 = n

我正试图从mobile.js文档中了解如何在显示页面时打开多个弹出窗口。例如,如果一个有三个标记(每个标记代表一座建筑),则每个标记都会立即打开其弹出窗口

隐晦地说:

“使用Map#openPopup打开弹出窗口,同时确保一次只打开一个弹出窗口(建议使用),或者使用Map#addLayer打开任意数量的弹出窗口。”

但是

没有给出如何实现这一目标的提示


有人能澄清一下这是否可行,并给出一些提示吗?

您必须将弹出窗口添加为图层。 请尝试以下示例代码:

var popupLocation1 = new L.LatLng(51.5, -0.09);
var popupLocation2 = new L.LatLng(51.51, -0.08);

var popupContent1 = '<p>Hello world!<br />This is a nice popup.</p>',
popup1 = new L.Popup();

popup1.setLatLng(popupLocation1);
popup1.setContent(popupContent1);

var popupContent2 = '<p>Hello world!<br />This is a nice popup.</p>',
popup2 = new L.Popup();

popup2.setLatLng(popupLocation2);
popup2.setContent(popupContent2);

map.addLayer(popup1).addLayer(popup2);
var popupLocation1=新L.LatLng(51.5,-0.09);
var popupLocation2=新L.LatLng(51.51,-0.08);
var popupContent1='你好,世界
这是一个很好的弹出窗口。

', popup1=新的L.Popup(); popup1.setLatLng(popupLocation1); popup1.setContent(popupContent1); var popupContent2='你好,世界
这是一个很好的弹出窗口。

', popup2=新的L.Popup(); popup2.setLatLng(popupLocation2); popup2.setContent(popupContent2); addLayer(popup1).addLayer(popup2);
例如:


在此处找到:

triky解决方案是从打开的地图对象中删除弹出链接:

map.on('popupopen', function (e) {
    delete map._popup;
});

在最新版本中,有一个自动关闭选项

要同时打开标记和弹出窗口,而不显式添加图层,请执行以下操作:

var popup1 = new L.Popup({'autoClose':false});
popup1.setLatLng([53.55375, 9.96871]);
popup1.setContent('First popup');

var popup2 = new L.Popup({'autoClose':false});
popup2.setLatLng([53.552046, 9.9132]);
popup2.setContent('Second popup');

L.marker([53.55375, 9.96871]).addTo(myMap)
    .bindPopup(popup1).openPopup();

L.marker([53.552046, 9.9132]).addTo(myMap)
    .bindPopup(popup2).openPopup();

使用自动关闭选项

非常好-我非常欣赏这个例子。我认为没有办法让图标和弹出窗口都出现在那里,对吗?嗨,美食,我不知道。试着在新的官方传单组中发布:下面的答案使用班级扩展是一个更好的方法,应该被接受answer@masterchief我不同意,由于openPopup实现的变化,下面的扩展破坏了togglePopup方法。效果很好,然而,我不得不用
L.Popup
更改
L.Popup
。你能解释一下这段代码将实现什么功能吗?如果您能解释一下,我将不胜感激。我编辑了我的答案。来自创建者:“您可以”L.Class.Extend“默认的L.Map类,定义一个新的openPopup方法。这个新方法将是默认方法的简单复制粘贴,除了当前弹出窗口关闭的部分(只需注释该行)再次感谢这一点,我是Javascript新手,这为调查/学习开辟了一条新途径,这将如何影响将来切换/关闭弹出窗口?
var popup1 = new L.Popup({'autoClose':false});
popup1.setLatLng([53.55375, 9.96871]);
popup1.setContent('First popup');

var popup2 = new L.Popup({'autoClose':false});
popup2.setLatLng([53.552046, 9.9132]);
popup2.setContent('Second popup');

L.marker([53.55375, 9.96871]).addTo(myMap)
    .bindPopup(popup1).openPopup();

L.marker([53.552046, 9.9132]).addTo(myMap)
    .bindPopup(popup2).openPopup();
marker.addTo(myMap).bindPopup('Hello popup', {autoClose:false}).openPopup();