Я пытаюсь работать с API-интерфейсом ArcGIS JavaScript. Я использую this FeatureLayer example, и я пытаюсь сделать всплывающее окно, в котором будут отображаться разные данные на основе идентификатора объекта, на который я нажимаю. В основном, что вы видите на этом примере.Как получить ObjectID из ArcGIS FeatureLayer в функции щелчка?
Проблема в том, что я не могу получить доступ к шаблону внешней переменной ObjectID. Внутри этого шаблона переменной вы просто устанавливаете заголовок как заголовок: «ID этого объекта - {ObjectID}». Это работает хорошо. Но у меня есть данные, хранящиеся в моей базе данных MySQL, поэтому я хочу, чтобы ObjectID хранился в переменной, когда я нажимаю на нее, а затем, возможно, отправляю ее через ajax на какой-то маршрут. Затем в контроллере найдите соответствующий объект, получите его данные из базы данных и отправьте его обратно во всплывающий шаблон и отобразите его.
Это моя идея, как это может работать, но мне нужно сначала получить ObjectID, который я не знаю, как получить доступ. Если у вас есть идея, как это можно решить, или вы знаете, как лучше поместить дополнительные данные из базы данных в PopupTemplate, сообщите мне, пожалуйста. Благодарю.
EDIT:
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer",
"dojo/on",
"dojo/domReady!"
], function(Map, MapView, FeatureLayer, On) {
var featureLayer = new FeatureLayer({
url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/NYCDemographics1/FeatureServer/0",
outFields: ["*"]
});
var map = new Map({
basemap: "streets",
layers: [featureLayer]
});
var view = new MapView({
container: "viewDiv",
map: map,
zoom: 11,
center: [-73.950, 40.702] //CZ [16, 49]
});
var template = {
title: "Marriage in NY, Zip Code: {ZIP}",
content: "<p>As of 2015, <b>{MARRIEDRATE}%</b> of the population in this zip code is married.</p>" +
"<ul><li>{MARRIED_CY} people are married</li>" +
"<li>{NEVMARR_CY} have never married</li>" +
"<li>{DIVORCD_CY} are divorced</li><ul>"
};
featureLayer.popupTemplate = template;
On(featureLayer, 'click', function(e){
console.log(e);
});
});
Вы можете разместить код JS для всего ваш всплывающий шаблон? И уточнить: вы спрашиваете, как заставить всплывающее слово «ID этого объекта: 1», «ID этого объекта - 2» и т. Д.? – Erica
@Erica Я использую в основном то, что в этом примере, просто проверьте его. Нет, это то, что легко сделать и хорошо работает, потому что ObjectID напрямую хранится в слое на сервере ArcGIS, если я правильно понял. Поэтому в шаблоне вы просто используете синтаксис {ObjectID} или {ATTRIBUTE_NAME} или что угодно, и всплывающее окно отображается с фактическими значениями. Я хочу показать дополнительные данные из моей локальной базы данных во всплывающем окне, а не те, которые хранятся на сервере ArcGIS. У меня есть база данных с инвазивными растениями, и я храню ссылки на изображения, описания, их имена и т. Д., И я хочу, чтобы эти данные также отображались во всплывающем окне. – Oliver
Когда вы нажмете на FeatureLayer, событие click будет возвращать объект с именем «object», но на самом деле это объект esri.Graphic, который является в основном функцией. Вы можете получить доступ к атрибутам объектов в этом объекте, включая ObjectID. – greenkarmic