ArcGIS JS-API, добавьте InfoTemplate к существующей графике - PullRequest
1 голос
/ 07 июня 2019

Как я могу добавить infoTemplate к существующему экземпляру Graphic?

Я делаю эти графические экземпляры без infoTemplate для каждой имеющейся у меня точки:

const layerMarkers = new GraphicsLayer({id: layerId});
this.map.addLayer(layerMarkers);
// Some code
const graphic = new Graphic(point, imageSymbol, null, null );
layerMarkers.add(graphic);

Затем я хочу вызвать некоторый API, когда я щелкаю по графику:

layerMarkers.on('click', function(e) {
    console.log(e);
    console.log(this);
    //Here I can see the object, I need to do something here with it
});

Мне нужно установить:

infoTemplate.setTitle(result.poi.nombre);
infoTemplate.setContent(this.getTooltip(result.poi));

И затем мне нужно обновить объект графа с помощьюinfoTemplate

Я не могу сделать:

const graphic = new Graphic(point, imageSymbol, null, infoTemplate);

Или я перезапишу свой объект.

Любые советы?

1 Ответ

1 голос
/ 10 июня 2019

Просто используйте метод setInfoTemplate на графическом слое, чтобы установить шаблон после того, как графический слой уже создан.

Если вы просто хотите показать информационное окно, когда пользователь нажимает на графический слой, просто используйте метод show в экземпляре InfoWindow карт.

this.map.infoWindow.show(e.screenPoint,e.getInfoWindowAnchor(e.screenPoint));

после установки содержимого.

Вы также можете использовать setFeatures , который будет принимать отложенное (которое в конечном итоге возвращает массив графики)

Существует множество способов сделать то, что вы хотите, в зависимости от порядка взаимодействия с пользователем и от того, получаете ли вы данные для всплывающего окна по сети или нет.

...