Мне трудно получить то, что я считал «простой» задачей, для работы в течение некоторого времени. Я хотел бы найти адрес и запустить «идентификацию» (здесь я использую специальный термин ArcGIS c) с координатами ответа. Я использую queryRenderedFeatures () и для этого конвертирую координаты широты и долготы в пиксельные координаты (см. Три строки ниже).
coordinates = [obj.result.center[0], obj.result.center[1]];
screenpoint = map.project(coordinates);
pointformat = mapboxgl.Point(screenpoint);
Однако запрос выполняется некорректно. Я получаю ответ, но они из разных мест. Ответ будет отображаться только при втором поиске (после refre sh и первого поиска адреса ничего не отображается), но даже в этом случае содержимое ответа неверно. Я реорганизовал код, чтобы посмотреть, был ли это вопрос порядка и событий, но без изменений. Я был бы очень признателен за любое предложение. Пожалуйста, дайте мне знать, если что-то неясно. Кроме того, я пытался объединить код, чтобы в нем могли быть опечатки, но на самом деле я пытаюсь понять содержимое и лог c внутри «функции geocodeInfobox (obj)».
var map;
var businessgeocoder;
var coordinates;
var screenpoint;
var pointformat;
var test;
var features;
var popup;
function initialize() {
businessgeocoder = new MapboxGeocoder({
accessToken: mapboxgl.accessToken,
flyTo: {
speed: 100
},
zoom: 15,
placeholder: 'Business location',
mapboxgl: mapboxgl
})
// adds the address searchboxes
map.addControl(businessgeocoder);
businessgeocoder.on('result', geocodeInfobox);
}
function geocodeInfobox (obj) {
coordinates = [obj.result.center[0], obj.result.center[1]];
screenpoint = map.project(coordinates);
pointformat = mapboxgl.Point(screenpoint);
test = map.queryRenderedFeatures(pointformat, {
layers: ['tract-4332-1sbuyl','blockgroups-4332-9mehvk']
});
if (!test.length) {
return;
}
var censustract1 = test[0];
var censusblockgroup1 = test[1];
console.log(censustract1.properties.CountyName +
censustract1.properties.NAMELSAD + censusblockgroup1.properties.NAMELSAD)
}
mapboxgl.accessToken = 'pk.eyJ1Ijoia3l1bmdhaGxpbSIsImEiOiJjanJyejQyeHUyNGwzNGFuMzdzazh1M2k1In0.TcQEe2aebuQZ4G7d827A9Q';
map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/kyungahlim/ckd226uao1p7i1iqo8ag2ewmu',
center: [-95.925, 29.575],
zoom: 7
});
map.on('load', initialize);