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

Другие вопросы по тегам