クエリから返されるポイントに応じてマップをズームイン/ズームアウトする機能を追加しようとしています。たとえば、テキサス州にズームインしたとします。クエリを実行し、サービスがテキサスにあるポイントとカリフォルニアにあるポイントを返す場合、マップをズームアウトしてから、カリフォルニアとテキサスの両方を表示します。ArcGIS JS APIを調べて実装方法を確認してきましたが、これを実現するために使用するプロパティやメソッドを理解するのに問題があります。
15170 次
3 に答える
22
のコールバックにFeatureSet
提供された には、QueryTask
の配列であるonComplete
プロパティがあります。 features
Graphics
JavaScript API は、esri.graphicsExtent(graphics)
その配列を受け入れてGraphics
その範囲を計算できる関数を提供します。範囲が計算map.setExtent(extent)
されると、マップをその範囲にズームするために使用できます。
のドキュメントでesri.graphicsExtent(...)
は、「エクステントの高さと幅が 0 の場合、null が返される」と指定されていることに注意してください。このケースは、返さGraphics
れた配列に 1 つのポイントしかない場合に発生するため、確認する必要があります。
QueryTask
onComplete
クエリによって返されたポイントの範囲にマップをズームするために使用できるコールバックの例を次に示します。
function onQueryComplete(returnedPointFeatureSet){
var featureSet = returnedPointFeatureSet || {};
var features = featureSet.features || [];
var extent = esri.graphicsExtent(features);
if(!extent && features.length == 1) {
// esri.getExtent returns null for a single point, so we'll build the extent by hand by subtracting/adding 1 to create x and y min/max values
var point = features[0];
extent = new esri.geometry.Extent(point.x - 1, point.y - 1, point.x + 1, point.y + 1, point.spatialReference);
}
if(extent) {
// assumes the esri map object is stored in the globally-scoped variable 'map'
map.setExtent(extent)
}
}
于 2012-08-04T01:45:48.230 に答える