Leaflet Awesome-Markers(添加数字)

时间:2014-03-24 23:04:01

标签: javascript dictionary leaflet font-awesome markers

我正在使用Leaflet.Awesome-MarkersLeafletJS插件。

我已正确实施,但现在我希望能够使用0到9之间的数字来表示标记。

这是一个JS Fiddle实现,用于显示插件的行为方式。

http://jsfiddle.net/fulvio/VPzu4/200/

该插件允许使用字体真棒图标和字形图标(当然,不提供任何0 - 9个数字作为图标。 argh !)

该文档提到了使用extraClasses的能力,我想知道是否有人可以指出我正确的方向,如何利用这个来显示数字而不是图标或是否只是另一种方式实现这一目标。

提前感谢您的帮助。

更新

感谢评论 @Can

令人敬畏的标记的作者得到了另一棵树,他在那里准确地添加了你正在寻找的东西awesome-markers with numbers/letters一定要抓住未经证实的JS。

4 个答案:

答案 0 :(得分:33)

我已经尝试过Numbered Markers插件,但它的图标并不像其他Awesome Markers那样漂亮,并且使页面布局样式不一致,所以我在Awesome-Markers插件中做了一些小改动,使其支持数字。这很简单。

  1. 这是Numbered Markers插件效果,如果你喜欢它,请跳过我的回答。 enter image description here

  2. 更改leaflet.awesome-markers.js第2行,添加html:""

    L.AwesomeMarkers.Icon = L.Icon.extend({
    options: {
        iconSize: [35, 45],
        iconAnchor:   [17, 42],
        popupAnchor: [1, -32],
        shadowAnchor: [10, 12],
        shadowSize: [36, 16],
        className: 'awesome-marker',
        prefix: 'glyphicon',
        spinClass: 'fa-spin',
        extraClasses: '',
        icon: 'home',
        markerColor: 'blue',
        iconColor: 'white',
        html : ""
    },
    
  3. 更改leaflet.awesome-markers.js第80行,

    return "<i " + iconColorStyle + "class='" + options.extraClasses + " " 
    + options.prefix + " " + iconClass + " " + iconSpinClass + " " 
    + iconColorClass + "'>" + options.html + "</i>";
    
  4. 创建图标时,像之前一样调用

    var jobMarkerIcon = L.AwesomeMarkers.icon({
    icon: '',
    markerColor: 'darkblue',
    prefix: 'fa',
    html: (i+1)
    });
    
  5. 评论第45和47行。

  6. 结果如下图所示。 enter image description here

  7. 代码更改差异如下所示。 enter image description here

答案 1 :(得分:14)

您可以按照本文关于在Leaflet中创建编号标记,而不是使用Awesome-Markers插件:

http://charliecroom.com/index.php/web/numbered-markers-in-leaflet

相关的要点在这里:

https://gist.github.com/comp615/2288108

这是如何工作的一个简单示例如下:

// The text could also be letters instead of numbers if that's more appropriate
var marker = new L.Marker(new L.LatLng(0, 0), {
    icon:   new L.NumberedDivIcon({number: '1'})
});

答案 2 :(得分:6)

另一种策略是使用Leaflet.ExtraMarkers plugin

使用以下选项对数字标记进行编码:

var numMarker = L.ExtraMarkers.icon({
icon: 'fa-number',
number: 12,
markerColor: 'blue'
});
L.marker([41.77, -72.69], {icon: numMarker}).addTo(map);

答案 3 :(得分:1)

如果您不想使用超棒的字体,可以在此处提供一个相当简单的解决方案: Simple Numbered Markers 它不需要任何额外的库。它已经在传单中。只需使用如下图标图像创建一个CSS类:

.number-icon
{
    background-image: url("images/number-marker-icon.png");
    background-size: 40px 40px;
    background-repeat: no-repeat;
    margin: 0 auto;
    text-align:center;
    color:white;
    font-weight: bold;   
}

然后创建这样的图标:

var numberIcon = L.divIcon({
      className: "number-icon",
      shadowSize: [20, 30], // size of the shadow
      iconAnchor: [20, 40], 
      shadowAnchor: [4, 30],  // the same for the shadow
      popupAnchor: [0, -30],
      html: variable_containing_the_number        
});

var marker = new L.marker([lat, long],
{                               
    icon: numberIcon                               
});