繁体   English   中英

.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应该可以,但是我得到了

未捕获的TypeError:test.toArray不是函数
在e。 (1:181)
在e.Evented.fire(evented.js:87)
在h(bind_handlers.js:139)
在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);
});

但是现在我得到:

未捕获的TypeError:无法读取未定义的属性“ bind”

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

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

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

编辑

什么都不会作为标记出现,就我所知,您必须自行设置样式,尝试添加此CSS来查看内容。

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

您可以尝试以下方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM