Me gustaría dibujar características en el mapa OpenLayers generado por el complemento QGIS2web. Dado que todo parece estar bien y todas las funciones aparecen ahora, a diferencia de la situación reciente .
Mi código completo está aquí:
https://jsfiddle.net/go39r4j7/
pero no estoy lo suficientemente convencido acerca de la situación, ya que sigo recibiendo el error:
TypeError: no se pueden leer las propiedades de null (leyendo 'get')
que señala el siguiente fragmento de código:
map.forEachFeatureAtPixel(pixel, function(feature, layer) { if (feature instanceof ol.Feature && (layer.get("interactive") || layer.get("interactive") == undefined)) { var doPopup = false; for (k in layer.get('fieldImages')) { if (layer.get('fieldImages')[k] != "Hidden") { doPopup = true; } }En teoría, sé que no puedo acceder al objeto, que es nulo:
https://idiallo.com/javascript/uncaught-typeerror-cannot-read-property-of-null
pero cualquier opción que probé (eliminar este fragmento de código, eliminar la propiedad layer.get , cambiar la layer.get("interactive") a mi propia identificación ( "draw" )) no tuvo éxito.
Además, este fragmento de código parece ser estándar para situaciones similares como esta:
https://gist.github.com/riccardoklinger/e3e2c512a366c8a6a296c10eef9c4162
¿Cómo puedo solucionar este problema? La herramienta funciona, aunque me preocupan futuras modificaciones.
https://openlayers.org/en/latest/apidoc/module-ol_Map-Map.html#forEachFeatureAtPixel
Función de devolución de llamada. La devolución de llamada se llamará con dos argumentos. El primer argumento es una función o función de representación en el píxel, el segundo es la capa de la función y será nulo para las capas no administradas.
Si tiene una capa no administrada (por ejemplo, la capa de superposición utilizada por una interacción Dibujar), deberá asegurarse de tener una capa antes de usar .get en ella:
if (feature instanceof ol.Feature && layer && (layer.get("interactive") || layer.get("interactive") == undefined)) {