<\/P>
Recientemente, hubo una genial serie de blogs sobre el uso de GeometryEngine<\/A> en la API de ArcGIS JS. Si no la has leído, te recomiendo mucho que lo hagas.<\/P><\/P>Pero antes de tener GeometryEngine, teníamos que hacer las cosas a la antigua usanza<\/EM>, revisando manualmente las geometrías por nuestra cuenta.<\/P><\/P>Saqué esto de un caso de uso que encontré en un repositorio antiguo mío. El caso de uso es que tengo un punto, y antes de poder hacer algo con este punto, necesito saber si el punto está contenido en alguna otra entidad.<\/P><\/P>Por ejemplo, tengo datos transmitiéndose en tiempo real a mi aplicación, digamos solicitudes de servicio, pero solo me interesa ver las que están en algunas áreas de servicio predefinidas.<\/P><\/P>Una utilidad simple podría verse algo así:<\/P><\/P>define([], function () { var geomUtil = {}; geomUtil.graphicsContain = function (graphics, pt) { var len = graphics.length; while (len--) { var graphic = graphics[len]; if (graphic.geometry.contains && graphic.geometry.contains(pt)) { return pt; } } return null; }; return geomUtil;});<\/PRE><\/P>Básicamente, iteras sobre los gráficos y tan pronto como encuentras un gráfico que contiene el punto, lo devuelves. Esto ahorra tiempo ya que no necesita iterar todos los gráficos para terminar<\/EM>.<\/P><\/P>Incluso podrías modificar esto un poco encontrando el gráfico en el arreglo graphics que contiene el punto<\/EM> y en lugar de devolver el punto, devolver el gráfico<\/EM>. Para hacerlo bien, tendrías que iterar sobre todos los gráficos, lo cual dependiendo de tu aplicación podría ser costoso.<\/P><\/P>Aquí hay un ejemplo de cómo podría verse esto en acción:<\/P>JS Bin - Collaborative JavaScript Debugging<\/A><\/P>Para probarlo, dibuja algunos rectángulos y polígonos en el mapa y luego intenta agregar puntos. Solo deberías poder agregar puntos dentro de los polígonos.<\/P><\/P>Incluso podrías ponerte bastante creativo y empezar a filtrar geometrías que puedas pasar al GeometryEngine y ahora<\/EM><\/STRONG> ¡tienes una fiesta!<\/P><\/P>Para más consejos y trucos geodev, ¡visita mi blog!<\/A><\/P><\/BODY><\/HTML>
Pero antes de tener GeometryEngine, teníamos que hacer las cosas a la antigua usanza<\/EM>, revisando manualmente las geometrías por nuestra cuenta.<\/P><\/P>Saqué esto de un caso de uso que encontré en un repositorio antiguo mío. El caso de uso es que tengo un punto, y antes de poder hacer algo con este punto, necesito saber si el punto está contenido en alguna otra entidad.<\/P><\/P>Por ejemplo, tengo datos transmitiéndose en tiempo real a mi aplicación, digamos solicitudes de servicio, pero solo me interesa ver las que están en algunas áreas de servicio predefinidas.<\/P><\/P>Una utilidad simple podría verse algo así:<\/P><\/P>define([], function () { var geomUtil = {}; geomUtil.graphicsContain = function (graphics, pt) { var len = graphics.length; while (len--) { var graphic = graphics[len]; if (graphic.geometry.contains && graphic.geometry.contains(pt)) { return pt; } } return null; }; return geomUtil;});<\/PRE><\/P>Básicamente, iteras sobre los gráficos y tan pronto como encuentras un gráfico que contiene el punto, lo devuelves. Esto ahorra tiempo ya que no necesita iterar todos los gráficos para terminar<\/EM>.<\/P><\/P>Incluso podrías modificar esto un poco encontrando el gráfico en el arreglo graphics que contiene el punto<\/EM> y en lugar de devolver el punto, devolver el gráfico<\/EM>. Para hacerlo bien, tendrías que iterar sobre todos los gráficos, lo cual dependiendo de tu aplicación podría ser costoso.<\/P><\/P>Aquí hay un ejemplo de cómo podría verse esto en acción:<\/P>
Para probarlo, dibuja algunos rectángulos y polígonos en el mapa y luego intenta agregar puntos. Solo deberías poder agregar puntos dentro de los polígonos.<\/P>
Incluso podrías ponerte bastante creativo y empezar a filtrar geometrías que puedas pasar al GeometryEngine y ahora<\/EM><\/STRONG> ¡tienes una fiesta!<\/P><\/P>Para más consejos y trucos geodev,
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.