<\/P>
かなり最近、ArcGIS JS APIでGeometryEngineを使う方法についての素晴らしいブログシリーズがありました。まだ読んでいなければ、ぜひ読むことを強くお勧めします。<\/P>
しかしGeometryEngineが登場する前は、昔ながらの方法で自分たちでジオメトリを手動でチェックしていました<\/EM>。<\/P><\/P>これは私の古いリポジトリで見つけたユースケースから引っ張ってきたものです。ユースケースは、ポイントがあって、そのポイントを使う前に、そのポイントが他のどのフィーチャにも含まれているかどうかを知る必要があるというものです。<\/P><\/P>例えば、サービスリクエストのようなデータがリアルタイムでアプリにストリーミングされているとしますが、私はあらかじめ定義されたサービスエリア内にあるものだけを見たい場合です。<\/P><\/P>シンプルなユーティリティは次のような感じになります:<\/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>基本的には、graphicsを繰り返し処理し、ポイントを含むグラフィックを見つけたらすぐにそれを返します。これにより、すべてのグラフィックを最後まで繰り返す必要がなくなるため時間を節約できます<\/EM>。<\/P><\/P>さらに少し工夫して、graphics配列の中でポイントを含むグラフィックを見つけて、ポイントではなくそのグラフィックを返すようにすることもできます。ただし正しく行うにはすべてのグラフィックを繰り返し処理する必要があり、アプリケーションによってはコストがかかる場合があります。<\/P><\/P>実際に動作するサンプルはこんな感じです:<\/P>JS Bin - Collaborative JavaScript Debugging<\/A><\/P>テストするには、地図上にいくつかの長方形やポリゴンを描いてからポイントを追加してみてください。ポイントはポリゴン内にしか追加できないはずです。<\/P><\/P>さらに関数を凝ったものにして、GeometryEngineに渡せるジオメトリだけをフィルタリングし始めてもいいでしょう。そうすれば今度こそ<\/STRONG>パーティーの始まりです!<\/P><\/P>もっと多くのgeodevのヒントやコツについては、私のブログをご覧ください!<\/A><\/P><\/BODY><\/HTML>
テストするには、地図上にいくつかの長方形やポリゴンを描いてからポイントを追加してみてください。ポイントはポリゴン内にしか追加できないはずです。<\/P>
さらに関数を凝ったものにして、GeometryEngineに渡せるジオメトリだけをフィルタリングし始めてもいいでしょう。そうすれば今度こそ<\/STRONG>パーティーの始まりです!<\/P><\/P>もっと多くのgeodevのヒントやコツについては、
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.