ESRI настраивая кнопку домой ГИС javascript
Общий вопрос Сначала, пожалуйста, прочитайте: Как я могу удалить SelectedBusStops и SelectedBusRoutes и Zoom to map: карту, когда пользователь нажимает кнопку домой?
Вот что я пытаюсь сделать. У меня есть приложение JavaScript, которое использует этот ArcGIS API для JavaScript вместе с некоторыми Ajax и JQuery. Я пытаюсь настроить кнопку "Домой" или создать свою собственную, которая может сделать больше, чем просто увеличить масштаб до начальной степени. Я попытался сделать это самостоятельно, создав кнопку, вызывающую функцию goHome(). Затем в рамках этой функции я сделал такие вещи, как удаление выделенного Выбранного маршрута из списка, а затем прокрутил его до верхней части списка маршрутов и удалил все время прибытия автобуса, которое могло быть заполнено, когда пользователь нажимал на автобусную остановку, чтобы показать время. У меня есть все, что я пока хочу, кроме удаления текущего выделенного (Выбранный маршрут) вместе с Текущими остановками шины, которые связаны с выбранным маршрутом, и затем масштабирования до моего начального экстента карты.
Я пытался сделать что-то вроде установки setDefinitionExpression для векторного слоя, который я хотел изменить, но из-за того, где эта функция находится в моем коде, он не может их видеть. Когда я помещаю эту функцию в основную функцию, она дает мне ReferenceError: goHome не определен. Поэтому я поместил его за пределы основной функции, и все работает до сих пор, но не могу понять, как заставить уходить FeatureLayers. Это даст мне сообщение об ошибке: ReferenceError: selectedBusStops не определено selectedBusStops.setDefinitionExpression("Маршрут нулевой");
Когда пользователь нажимает на маршрут в списке, он входит и устанавливает определение Definition, чтобы показывать только этот Выбранный маршрут. Как это:
selectedBusStops.setDefinitionExpression("Route like '%" + routeSlice + "%'");
Вот мои FeatureLayers: ** Здесь были мои проблемы с невозможностью использовать их в другой функции. Я объявил их с помощью 'var', и это сделало их локальными для функции, в которой они находились. Удалил 'var' и решил проблему, теперь я могу хотя бы очистить функции. **
var selectedBusRoute = new FeatureLayer("http://PROD_RTC_SystemMap/MapServer/4", {
mode: FeatureLayer.MODE_SELECTION,
outFields: ["*"],
infoTemplate: selectedBusRouteTemplate
});
var selectedBusStops = new FeatureLayer("http://PROD_RTC_SystemMap/MapServer/0", {
mode: FeatureLayer.MODE_ONDEMAND,
outFields: ["*"],
infoTemplate: selectedBusStopsTemplate
});
Я думал, есть ли способ как-то манипулировать esri/dijit/HomeButton, чтобы сделать все это, или я на правильном пути? Esri / GitHub/homebutton
Спасибо, что нашли время, чтобы прочитать это, и я ценю весь ввод (даже те, которые говорят, что мой код выглядит как *#).
Вот код, который у меня есть для вызываемой функции:
function goHome() {
// Reset the Accordian Content Panes and fix naming
var newTitle = "Bus Arrival Times";
dijit.byId("pane3").set("title", newTitle);
var container = dijit.byId("container");
container.selectChild("RTCBusroutes", true);
// This will remove old values in Bus Arrival Time pane so Bus Arrival Times will clear
var results = document.getElementById("results");
var rowCount = results.rows.length;
for (var x = rowCount - 1; x > 0; x--) {
results.deleteRow(x);
}
// Removes the Highlight from the currently selected Item in the RTC Bus Routes List pane
$('.highlight').removeClass('highlight');
// Scrolls to the top of the List in the RTC Bus Routes Content Pane List
$('#RTCBusroutes').scrollTop(0);
// Remove Currently Selected Bus Routes
// Remove Currently Selectes Bus Stops
// Zoom to Map Extent
}
Вот кнопка, которую я добавил:
<button id="homeImg" onclick="goHome()">
<img id="myImg" src="img/home.png" />
</button>
CSS для кнопки "Домой" #homeImg
/* for the Home Button CSS */
#homeImg {
position: absolute;
top: 138px;
left: 28px;
z-index: 8;
background-color: #888888;
opacity: 0.8;
filter: alpha(opacity=80);
cursor: pointer;
}
1 ответ
Вы можете очистить FeatureLayer, вызвав для него метод.clear(), а затем очистить всю графику в слое.
Если вы хотите только очистить выборки, вызовите метод.clearSelections().
Здесь есть больше документов о других методах векторного слоя:
https://developers.arcgis.com/javascript/jsapi/featurelayer-amd.html