Mapbox:默认显示工具提示,无需单击标记

时间:2014-01-02 20:09:43

标签: javascript css map markers mapbox

在页面加载时打开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();

1 个答案:

答案 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/