在页面加载时打开Mapbox地图上的所有工具提示的最佳方法是什么,而无需单击标记来显示它?我尝试删除opacity: 0
上的.leaflet-popup
,但这不起作用,因为看起来它们是由JS在运行中构建的。
甚至可以这样做吗?我意识到这不是传统的,但我有一个模拟我正在尝试重新创建基本上标记看起来像工具提示,标题在里面。我搜索并搜索了自定义标记的方法,但我唯一能找到的就是使用自己的自定义图像。由于我必须显示无效的动态标题,所以我现在的计划是对标记图像使用1x1透明png,默认情况下只显示工具提示。
修改
这是我的代码:
// Setup map
var map = L.mapbox.map("destinations-map", "xxx")
.setView([40, -74.50], 2);
// Load regions from JSON file
var loadRegions = function () {
$.ajax({
dataType: "json",
url: "/regions",
success: function (data) {
$.each(data.regions, function(i, region) {
L.mapbox.markerLayer({
type: "Feature",
geometry: {
type: "Point",
coordinates: region.coordinates
},
properties: {
title: region.title
}
})
.addTo(map)
.openPopup();
});
}
});
};
// Initially load region markers
loadRegions();
答案 0 :(得分:4)
您可以通过在Leaflet中扩展Map对象来修改弹出窗口的默认行为。 Leaflet.js广泛使用了伪经典继承模式,因此您已经为您做了很多工作。尝试:
L.Map = L.Map.extend({
openPopup: function(popup) {
this._popup = popup;
return this.addLayer(popup).fire('popupopen', {
popup: this._popup
});
}
});
然后当你添加弹出窗口时,直接打开它们:
L.marker([65.10, 14.77])
.addTo(map)
.bindPopup("<b>Hello world!</b><br />I am popup 1.")
.openPopup();
以下是一个示例:http://jsfiddle.net/P543v/