将自定义标记添加到Mapbox地图

时间:2018-05-18 12:08:48

标签: javascript jquery mapbox mapbox-gl-js

我在项目中使用mapbox

我使用的是mapbox.js 并使用像这样的自定义标记制作我的地图

 $(function() { 
  const token = '*********';
  let myLatlng = L.latLng(<%= @hotel.lat %>,<%= @hotel.lng %>);
  L.mapbox.accessToken = token;
  let map = L.mapbox.map('map-canvas', 'mapbox.streets')
  .setView(myLatlng, 14);

  let marker = new L.marker(myLatlng,{
    icon: L.icon({
        iconUrl: '//chart.googleapis.com/chart?chst=d_map_pin_icon&chld=home|EBCB2D'
      })
  }).addTo(map);
  });

我正在改变这样的标记图标

  icon: L.icon({
        iconUrl: '//chart.googleapis.com/chart?chst=d_map_pin_icon&chld=home|EBCB2D'
      })

我想知道MapBox GL JS是否有像rhis这样的简写方法来改变它?

1 个答案:

答案 0 :(得分:0)

要说明给出的两条评论,有两种不同的方法可以将自定义图像添加到地图中:

使用符号图层

地图中存在符号图层,可用于显示数据源。

首先,使用loadImage()获取图片网址:

map.loadImage('https://example.com/image.png', function(error, image) {
    if (error) throw error;

然后,使用addImage()将获取的图像转换为用于地图的图标:

   map.addImage('pin', image);

最后,在图层上使用该图标:

   map.addLayer({ id: 'mypin', type: 'symbol', paint: { 'icon-image': 'pin' });

完整示例:https://www.mapbox.com/mapbox-gl-js/example/add-image/

使用标记

或者,您可以使用标记。它存在于地图上方,不会与其中的数据进行交互。

首先,为图像创建DOM元素:

var el = document.createElement('div');
el.className = 'marker';
el.style.backgroundImage = 'url(https://example.com/icon.png)';
el.style.width = '20px';
el.style.height = '20px';

接下来,根据此元素创建一个Marker对象,并将其添加到地图中:

new mapboxgl.Marker(el)
    .setLngLat(mylatlng)
    .addTo(map);

完整示例:https://www.mapbox.com/mapbox-gl-js/example/custom-marker-icons/