.toArray();不是函数

.toArray(); is not a function

我在将经度和纬度转换为数组时遇到问题我的代码是这样的:

<div id="right" class="map">

  <div id='map' class="map" style='width: 100%; height: 100%; margin: 0px;'></div>
  <script>
    mapboxgl.accessToken = 'pk.eyJ1IjoibGl2ZS1vbGRoYW0iLCJhIjoiY2ozbXk5ZDJ4MDAwYjMybzFsdnZwNXlmbyJ9.VGDuuC92nvPbJo-qvhryQg';
    var map = new mapboxgl.Map({
      container: 'map',
      style: 'mapbox://styles/mapbox/streets-v10',
      center: [-1.77, 52.73],
      zoom: 3

    });
    map.addControl(new MapboxGeocoder({
      accessToken: mapboxgl.accessToken
    }));
    map.on('click', function(e) {
      var test = JSON.stringify(e.lngLat);
      test.toArray();
      console.log(test);
      mapboxgl.Marker()
        .setLngLat(test)
        .addTo(map);
    });

测试返回值为:

{"lng":-2.8246875000017155,"lat":52.72999999999914}

但是,该值需要为:

[-2.8246875000017155, 52.72999999999914]

所以 toArray 应该可以工作,但我得到

Uncaught TypeError: test.toArray is not a function
at e. (1:181)
at e.Evented.fire (evented.js:87)
at h (bind_handlers.js:139)
at HTMLDivElement.s (bind_handlers.js:114)

编辑

map.on('click', function(e) {
  var test = e.lngLat;
  console.log(test);
  test.toArray();
  mapboxgl.Marker()
    .setLngLat(test)
    .addTo(map);
});

但现在我得到:

Uncaught TypeError: Cannot read property 'bind' of undefined

您可以尝试以下方法:

var longLatArray = [];
longLatArray.push(e.lng);
longLatArray.push(e.lat);
mapboxgl.Marker()
    .setLngLat(longLatArray)
    .addTo(map);

问题是您必须创建一个 new 标记。如果您遵循 documentation 中的代码,它应该可以工作。

尝试对您的代码进行以下修改

map.on('click', function (e) {
    new mapboxgl.Marker()
        .setLngLat(e.lngLat)
        .addTo(map);
});

编辑

什么都不会显示为标记,据我所知,您必须自己设置样式,尝试添加此 CSS 以查看内容。

.mapboxgl-marker {
    width: 10px;
    height: 10px;
    background-color: purple;
}