11

我想用 Leaflet 绘制许多地理点。因此我想使用 HTML5 画布来提高性能。我的数据源是geoJSON。正如我在 Leaflet 的文档中看到的那样,尚无法将地理位置绘制为画布。

var anotherGeojsonLayer = new L.GeoJSON(coorsField, {
        pointToLayer: function (latlng){
            return new L.Marker(latlng, {
                icon: new BaseballIcon()
            });
        }
    });

我想我应该在这里联系:

pointToLayer: 函数 (latlng) { }

有人知道如何将我的 latlng 对象绘制为画布吗?

4

2 回答 2

18

我是传单作者。您可以通过使用 L.CircleMarker 而不是常规标记来做到这一点,还可以使用实验性 L_PREFER_CANVAS 开关将矢量呈现为画布(而不是 SVG),如下所示:https ://github.com/CloudMade/Leaflet/blob/master /debug/vector/vector-canvas.html

于 2012-06-22T21:22:40.163 回答
9

扩展原始答案,以防有人需要 Leaflet 1.0。您仍然应该使用L.circleMarker() (Leaflet circleMarker 文档)而不是L.marker(),但是使用画布的方式已经改变。

在 Leaflet 1.0 中,实验L_PREFER_CANVAS开关已升级为官方地图选项preferCanvas (Leaflet preferCanvas 文档)

var map = L.map('mapid', {
        preferCanvas: true
    });

或者,您可以显式设置画布渲染器;我认为这与选项的作用相同preferCavas。这是canvas 的传单文档

var map = L.map('mapid', {
        renderer: L.canvas()
    });

这些选项(preferCanvas: truerenderer: L.canvas())中的任何L.circleMarker()一个都比使用L.marker().

于 2016-09-27T18:24:12.237 回答