#javascript #jsfiddle #mapbox-gl
#javascript #jsfiddle #mapbox-gl
Вопрос:
Я создал фрагмент stackoverflow внутри ответа, но получаю сообщение об ошибке, если я использую map.queryRenderedFeatures()
. Вне фрагмента в index.html
all работает нормально. Может ли это быть проблемой CORS? Я не получил сообщения об ошибке, кроме неопределенного возврата. Странно то, что иногда он работает в полностраничном режиме
Вот мой фрагмент:
mapboxgl.accessToken = 'pk.eyJ1IjoicHJheWVyIiwiYSI6ImI3OGRjZjcyY2JiZTUzODMwZWUxZDdiNjRiMWE4NjI5In0.zETX-x6-XPpAv3zt4MiFwg';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/prayer/ciub6rm2j004v2iodiej359ox',
center: [14.5, 47],
zoom: 6
});
map.on('click', function (e) {
var features = map.queryRenderedFeatures({
layers:['roads-bm6ga5'],
filter: ["==", "id", 1]
});
document.getElementById('features').innerHTML = '<b>Road with ID</b> ' features[0].properties.id ' has the coordinates:'
'<br>' JSON.stringify(features[0].geometry.coordinates, null, 2);
});
map.on('load', function (e) {
alert("Click in the map to show coordinates of road with ID 1")
});
body { margin:0; padding:0; }
#map { position:absolute; top:0; bottom:0; width:100%; }
#features {
position: absolute;
top: 0;
right: 0;
bottom: 0;
width: 300px;
overflow: auto;
background: rgba(255, 255, 255, 0.8);
}
#map canvas {
cursor: crosshair;
}
<link href="https://api.tiles.mapbox.com/mapbox-gl-js/v0.26.0/mapbox-gl.css" rel="stylesheet"/>
<script src="https://api.tiles.mapbox.com/mapbox-gl-js/v0.26.0/mapbox-gl.js"></script>
<div id='map'></div>
<pre id='features'></pre>
Комментарии:
1.
features
представляет собой пустой массив. Такfeatures[0].properties.id
что выдаст ошибку. Вы должны проверить, есть лиfeatures.length>0
2. Хм , спасибо вам ! Но функции[0] в этом случае не должны быть пустыми.. Я посмотрю, почему это происходит
3. За пределами скрипки она никогда не была пустой.. В чем причина этого ? Похоже, что запрос не работает должным образом внутри скрипки
4. @Rajesh Ты знаешь причину?
5. Не уверен, но когда я создавал JSFiddle , было несколько дополнительных запросов. В основном
23.vector.pbf
. Это может быть причиной. Вы должны проверить, доступны ли все векторы.