.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;
}
我在将经度和纬度转换为数组时遇到问题我的代码是这样的:
<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;
}