6 votos

¿Cómo ocultar InfoWindow/Popup cuando "no hay información disponible" o cuando está en almacenamiento temporal?

Tengo una aplicación que realiza algún almacenamiento en búfer, el único problema es que cuando hago clic en el mapa para introducir los vértices del punto/línea/polinomio para hacer el búfer, aparecen ventanas emergentes en cada clic del ratón. No interrumpe el proceso de búfer, pero es muy molesto.

En un principio, pensé en intentar desactivar las ventanas emergentes para que no se mostraran cuando el resultado fuera "No hay información disponible". Pero supongo que habrá más veces en las que una ventana emergente devolverá algunos resultados y, por lo tanto, es necesario desactivar/ocultar la ventana emergente para que no aparezca en absoluto mientras se está ejecutando el proceso de búfer.

He intentado poner map.infoWindow.hide(); dentro del búfer sin éxito y también vi esta publicación que recomienda un controlador onClick y tampoco he tenido éxito. Cualquier consejo es apreciado.

7voto

Jose K Thomas Puntos 11

Esta pregunta tiene un año de antigüedad pero esta solución alternativa puede ser útil para otros.

Si estás usando la clase Popup puedes configurar el Popup como una variable global para que no se muestre la ventana mientras se actualiza. Para evitar que aparezca la ventana "No hay información disponible", simplemente establece visibleWhenEmpty en false y hideDelay en 0:

var popup = new Popup(...);
popup.visibleWhenEmpty= false;
popup.hideDelay = 0;        // Número de milisegundos después del cual la ventana emergente se ocultará cuando visibleWhenEmpty sea false y el número de entidades sea 0

map = new Map("...", {
    ...
    infoWindow: popup
});

map.on("update-start", function () {
    popup.popupWindow= false;        // Indica si la ventana emergente debe mostrarse.
}

map.on("update-end", function () {
    popup.popupWindow= true;        // Indica si la ventana emergente debe mostrarse.
}

Desafortunadamente, esto no evita que aparezca la ventana de "Buscando" por lo que aún verás brevemente una ventana emergente incluso si no hay resultados. De hecho, puede ser preferible ver la ventana "No hay información disponible" durante unos segundos en lugar de no verla en absoluto.

3voto

Paul Hargreaves Puntos 1022

Mira esta publicación para obtener un buen ejemplo JS API Toggle Pop-Up On & Off. Cuando agregas una conexión al evento onclick en el mapa o featurelayer, necesitas guardar la referencia al clickHandle. Luego, cuando se inicia un flujo de trabajo donde no deseas que aparezcan ventanas emergentes, desconectas y luego vuelves a conectar cuando hayas terminado.

//en lugar de esto -- no hagas esto
dojo.connect(featureLayer,"onClick",function(evt){
   map.infoWindow.setFeatures([evt.graphic]);
   map.infoWindow.show(evt.mapPoint);
});

//haz esto -- guarda el manejador de clics para desconectar o reconectar más tarde
var clickHandlePopup = dojo.connect(featureLayer,"onClick", showPopup(evt));

//manejador de clics
function showPopup(evt){
   map.infoWindow.setFeatures([evt.graphic]);
   map.infoWindow.show(evt.mapPoint);
}

//comenzar el almacenamiento en búfer -- desconectar
if (clickHandlePopup) {
    dojo.disconnect(clickHandlePopup);
    clickHandlePopup = null;
}

//detener el almacenamiento en búfer -- conectar
if (!clickHandlePopup) {
    clickHandlePopup = dojo.connect(featureLayer, "onClick", showPopup(evt));
}

También, mira esta publicación para activar y desactivar las ventanas emergentes al usar webmaps Turn Popups On/Off in ArcGIS Online Webmap via Javascript API Web Application

0voto

Alex Puntos 13

Hay muchas personas que están pidiendo este cambio para eliminar la ventana emergente de "no hay información disponible", sin embargo ESRI se niega a cambiarlo. Lo ideal sería que la ventana emergente esté desactivada si el usuario no hace clic en una entidad. Esto es simplemente sentido común para una interfaz de usuario.

De todas formas, pude desactivar la ventana emergente cuando el usuario hace clic en una de mis entidades en una capa de gráficos. De lo contrario, la ventana emergente está habilitada cuando el usuario hace clic en una entidad de nuestro sistema GIS configurado por el equipo de GIS a través del webmap en Portal. Desafortunadamente, todavía aparece cuando el usuario hace clic en un espacio vacío. No he encontrado una forma de detectar un clic en un espacio vacío y deshabilitarlo solo cuando eso ocurre.

var promiseCreateMap = arcgisUtils.createMap(webmapID, "main-map", options);

promiseCreateMap.then(function(response) {
  MainPage.map = response.map;

  MainPage.clickEventHandle = response.clickEventHandle;
  MainPage.clickEventListener = response.clickEventListener;
  ...
}

// Capa de gráficos en evento de clic muestra mi propio diálogo de Bootstrap en lugar de InfoWindow
self.graphicsLayer.on("click", function(evt) {
  MainPage.disableInfoWindow();
  $('#dialog-irthnet').modal('show');
  $(document).on('hide.bs.modal', '#dialog-irthnet', function() {
    MainPage.enableInfoWindow();
  });
});

MainPage.disableInfoWindow = function() {
  // Conectar editor
  if (MainPage.clickEventHandle) {
    dojo.disconnect(MainPage.clickEventHandle);
    MainPage.clickEventHandle = null;
  }
};

MainPage.enableInfoWindow = function() {
  // Desconectar editor
  if (!MainPage.clickEventHandle) {
    MainPage.clickEventHandle = dojo.connect(MainPage.map, "onClick", MainPage.clickEventListener);
  }
};

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X