Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .toArray();这不是一个函数_Javascript_Jquery_Mapbox - Fatal编程技术网

Javascript .toArray();这不是一个函数

Javascript .toArray();这不是一个函数,javascript,jquery,mapbox,Javascript,Jquery,Mapbox,我在将longitute和latitute转换为数组时遇到问题我的代码如下: <div id="right" class="map"> <div id='map' class="map" style='width: 100%; height: 100%; margin: 0px;'></div> <script> mapboxgl.accessToken = 'pk.eyJ1IjoibGl2ZS1vbGRoYW0iLCJhIjoi

我在将longitute和latitute转换为数组时遇到问题我的代码如下:

<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);
    });
但现在我明白了:

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


您可以尝试以下方法:

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

问题是您必须创建一个新的标记。如果您遵循中的代码,它应该会起作用

尝试对代码进行以下修改

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

map.on('click', function(e) {
  var test = e.lngLat;
  console.log(test);
  test.toArray();
  mapboxgl.Marker()
    .setLngLat(test)
    .addTo(map);
});
没有任何东西会显示为标记,就我所知,您必须自己设计样式,尝试添加此CSS以查看某些内容

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

为什么一个常规字符串会有一个
toArray
方法,没有这样的东西?但是你已经使用了
JSON.stringify
,你不再有一个mapbox对象,只是一个普通的旧字符串?在编辑中,你必须在一个变量中捕获调用
toArray
的结果。像
test=test.toArray()
。你应该能够将
lngLat
对象直接传递给
setLngLat()
@Przemek,他们的意思是只需执行
mapboxgl.Marker().setLngLat(e.lngLat).addTo(map)
still same error=Uncaught TypeError:无法读取undefinedHave的属性“bind”您是否有可以共享的plunk?当您记录e的值时,您看到了什么?看起来您可能错误地使用了Marker():看起来它需要一个对象,不是吗?@KyleMeenehan它需要是
e.lngLat.lng
e.lngLat.lat
,也请参见。你看到的Marker文档是错误的,它是,而不是Google。